【问题标题】:Check csv columns before adding to df?在添加到 df 之前检查 csv 列?
【发布时间】:2020-11-17 18:53:45
【问题描述】:

我想将 csv 文件导入 Dataframe,我使用 pd.read_csv。 但是我有许多 csv 文件要导入,它们的列并不完全相同,但仍有一些共同点。 我无法更改 csv 文件,因为它们来自不同的来源,但在我获取它们时混合在一起,并且我无法使用名称过滤它们。另外,我不能全部导入然后过滤DataFrame,因为有些列是共同的。

在将其添加到 Dataframe 之前,有没有办法检查列数或某列是否在 csv 文件中?

类似: read_csv(source) 如果 'XXXX' 在 CSV 中

谢谢!

【问题讨论】:

  • 使用nrows=1read_csv 参数中读取,检查列,如果条件满足则读取整个文件。另一种解决方案是编写一个读取第一行并检查 col 信息的函数。
  • 您可以使用len(df.columns)查看列号
  • 我猜当 csv 已经加载时,这些操作更容易完成。你能不能只将 csv 加载到不同的数据帧,检查它包含的数据,然后只将你想要的数据(例如不常见的列)添加到更大的帧?
  • pd.read_csv('csvfile.csv' , usecols = ['col1','col2'])
  • RakeshV 我不能使用它,因为两种类型的 CSV 都有共同的列read_csv

标签: python pandas dataframe csv


【解决方案1】:

如果答案对任何人有用: 当我使用列表理解时,我添加了 if 语句:

files = glob.glob(path + "/*.csv")
df = pd.concat([pd.read_csv(f) for f in files if all(c in list(pd.read_csv(f, nrows=1))
     for c in colonnes_data) ], keys=files, axis=0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多