使用 Pandas 将 CSV 读入具有不同行长度的数据帧

新手上路,请多包涵

所以我有一个看起来有点像这样的 CSV:

 1 | 01-01-2019 | 724
2 | 01-01-2019 | 233 | 436
3 | 01-01-2019 | 345
4 | 01-01-2019 | 803 | 933 | 943 | 923 | 954
5 | 01-01-2019 | 454
...

当我尝试使用以下代码生成数据帧时..

 df = pd.read_csv('data.csv', header=0, engine='c', error_bad_lines=False)

它只将具有 3 列的行添加到 df(上面的第 1、3 和 5 行)

其余的被认为是“坏线”给我以下错误:

 Skipping line 17467: expected 3 fields, saw 9

如何创建一个包含我的 csv 中 所有 数据的数据框,可能只是用 null 填充空单元格?或者我是否必须在添加到 df 之前声明最大行长度?

谢谢!

原文由 caaax 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 829
1 个回答

如果只使用 pandas ,读入行,处理之后的分隔符。

 import pandas as pd

df = pd.read_csv('data.csv', header=None, sep='\n')
df = df[0].str.split('\s\|\s', expand=True)

   0           1    2     3     4     5     6
0  1  01-01-2019  724  None  None  None  None
1  2  01-01-2019  233   436  None  None  None
2  3  01-01-2019  345  None  None  None  None
3  4  01-01-2019  803   933   943   923   954
4  5  01-01-2019  454  None  None  None  None

原文由 ALollz 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题