read_csv - 使用Pandas處理可變數量的列-Python




pandas讀取csv (2)

一種似乎有用的方法(至少在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

請注意,此方法要求您為所需的列指定名稱。 不像其他一些方式那樣通用,但在適用時效果很好。

https://code.i-harness.com

我有一個看起來像這樣的數據集(最多5列 - 但可以更少)

1,2,3
1,2,3,4
1,2,3,4,5
1,2
1,2,3,4
....

我正在嘗試使用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)

我收到一個錯誤 - “列名有5個字段,數據有3個字段”。

在閱讀數據時,有沒有辦法讓pandas為缺少的列填充NaN?


好。 不確定這是多麼有效 - 但這就是我所做的。 很想知道是否有更好的方法來做到這一點。 謝謝 !

from pandas import DataFrame

list_of_dicts=[]
labels=['A','B','C','D','E']
for line in file:
    line=line.rstrip('\n')
    list_of_dicts.append(dict(zip(labels,line.split(','))))
frame=DataFrame(list_of_dicts)




pandas