Python 3.x 如果列不存在,则向dataframe追加空行

Python 3.x 如果列不存在,则向dataframe追加空行,python-3.x,pandas,Python 3.x,Pandas,这个问题有点奇怪和复杂,请耐心听我说 我有几个巨大的CSV文件(GB大小),我正在用pandas导入这些文件。这些CSV文件是数据采集系统收集的数据转储,我不需要其中的大部分,因此我使用usecols参数来过滤相关数据。问题是并非所有CSV文件都具有我需要的所有列(所使用的数据系统的属性) 问题是,如果该列不存在于文件中,但在usecols中指定,read\u csv将抛出错误 有没有一种简单的方法可以强制在数据帧中设置一个指定的列,如果该列不存在,pandas只返回空行?我曾考虑对每个文件的每

这个问题有点奇怪和复杂,请耐心听我说

我有几个巨大的CSV文件(GB大小),我正在用
pandas
导入这些文件。这些CSV文件是数据采集系统收集的数据转储,我不需要其中的大部分,因此我使用
usecols
参数来过滤相关数据。问题是并非所有CSV文件都具有我需要的所有列(所使用的数据系统的属性)

问题是,如果该列不存在于文件中,但在
usecols
中指定,
read\u csv
将抛出错误

有没有一种简单的方法可以强制在数据帧中设置一个指定的列,如果该列不存在,
pandas
只返回空行?我曾考虑对每个文件的每一列进行迭代,并将生成的序列处理到数据帧中,但这似乎效率低下且不实用

我曾考虑对每个文件的每一列进行迭代,并将生成的序列处理到数据帧中,但这似乎效率低下且不实用

假设某种类型的主列表
所有要使用的列
,您可以执行以下操作:

def parse_big_csv(csvpath):
    with open(csvpath, 'r') as infile:
        header = infile.readline().strip().split(',')
        cols_to_use = sorted(set(header) & set(all_cols_to_use))
        missing_cols = sorted(set(all_cols_to_use) - set(header))
    df = pd.read_csv(csvpath, usecols=cols_to_use)
    df.loc[:, missing_cols] = np.nan
    return df

这假设您可以用
np.nan
填充缺少的列,但应该可以。(另外,如果要连接数据帧,缺少的列将出现在最终df中,并根据需要填入
np.nan

我有一个固定的列列表,这些列存在或不存在(它们不会移动,只是因为系统尚未初始化而不存在)
np.nan
不是问题,因为最终结果是一个绘图,所以不会被绘图。我不理解你的插入语-你是说,在连接的数据帧中,由于该文件不存在列而“空白”的任何行都将填充
np.nan
,对吗?如果连接df1和df2,其中df1有列a,而dg2没有列,结果数据帧将有A列,df2的所有值都将是NAN。