我有一个看起来像这样的数据集(最多5列 - 但可以更少)
1,2,3
1,2,3,4
1,2,3,4,5
1,2
1,2,3,4
....
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用pandas read_table将其读入5列数据帧.我想在没有额外按摩的情况下阅读此内容.
如果我试试
import pandas as pd
my_cols=['A','B','C','D','E']
my_df=pd.read_table(path,sep=',',header=None,names=my_cols)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误 - "列名有5个字段,数据有3个字段".
在阅读数据时,有没有办法让pandas为缺少的列填充NaN?
DSM*_*DSM 72
一种似乎有用的方法(至少在0.10.1和0.11.0.dev-fc8de6d中):
>>> !cat ragged.csv
1,2,3
1,2,3,4
1,2,3,4,5
1,2
1,2,3,4
>>> my_cols = ["A", "B", "C", "D", "E"]
>>> pd.read_csv("ragged.csv", names=my_cols, engine='python')
A B C D E
0 1 2 3 NaN NaN
1 1 2 3 4 NaN
2 1 2 3 4 5
3 1 2 NaN NaN NaN
4 1 2 3 4 NaN
Run Code Online (Sandbox Code Playgroud)
请注意,此方法要求您为所需的列指定名称.不像其他一些方式那样通用,但在适用时效果很好.
her*_*rfz 15
我也有兴趣知道这是否可行,从文档来看似乎并非如此.您可能要做的是逐行读取文件,并将每个读取连接到DataFrame:
import pandas as pd
df = pd.DataFrame()
with open(filepath, 'r') as f:
for line in f:
df = pd.concat( [df, pd.DataFrame([tuple(line.strip().split(','))])], ignore_index=True )
Run Code Online (Sandbox Code Playgroud)
它的工作原理但不是最优雅的方式,我猜......
| 归档时间: |
|
| 查看次数: |
36174 次 |
| 最近记录: |