python - pandas - 读取非结构化 csv 并将其保存在数据框中
问题描述
我有一个非结构化 CSV,它没有所有行的列数一致。
输入 CSV 如下所示:
Row1,Col11,Col12,Col13
Row2,Col21,Col22,Col23,Col24,Col25
Row3,Col31,Col32
Row4,,,,Col44
请注意,这是逗号分隔的文件,很少有行甚至可能只有逗号来表示空值(例如,第 4 行),但很少有可能有更少的值,其他值必须考虑空值(例如,其余行)
我希望它按原样将此原始文件读入 pandas 数据帧,如果是 Null,则放入 NaN。
像这样的东西:
0 1 2 3 4 5
0 Row1 Col11 Col12 Col13 NaN NaN
1 Row2 Col21 Col22 Col23 Col24 Col25
2 Row3 Col31 Col32 NaN NaN NaN
3 Row4 NaN NaN NaN Col44 NaN
我正在使用 pandas.read_csv 函数来读取它,但看起来它使用第一行来确定列数,并且由于它不一致,它会给出错误。
代码:
df= pd.read_csv(path, engine='python', header = None)
错误:
Expected 4 fields in line 2, saw 6
我怎样才能解决这个问题?
解决方案
这样的事情会有所帮助:
with open('out.txt') as f:
df = pd.DataFrame([line.strip().split(',') for line in f.readlines()]
).replace('', None).fillna(np.nan)
输出:
0 1 2 3 4 5
0 Row1 Col11 Col12 Col13 NaN NaN
1 Row2 Col21 Col22 Col23 Col24 Col25
2 Row3 Col31 Col32 NaN NaN NaN
3 Row4 Col31 Col32 NaN Col44 NaN
推荐阅读
- xamarin - Mapbox 导航 Xamarin 绑定 - AAR 错误“未实现接口 IComparator.Compare”
- html - 为什么带背景的 div 不显示为一个在另一个之下?
- r - 在 ggplot2 上为多个变量的线图添加阴影标准差
- javascript - Fetch API 上传的 cookie 不完整
- file-descriptor - 文件描述符规范
- gerrit - 有没有办法在 Gerrit 中添加替代修复?
- javascript - 从 ReactJS 中的对象列表渲染 JSON 子列表
- sql - 从 SQL 中的每一列中减去聚合函数
- magento - Magento SOAP API - 获取产品附件
- json - Power BI 自定义主题 .json - 多系列自定义