Csv缺少Pandas Dataframe的列

时间:2017-09-14 15:50:38

标签: python pandas dataframe

我想将csv作为数据帧读入Pandas。

我的csv文件格式如下

a b c d
0 1 2 3 4 5
1 2 3 4 5 6

当我用Pandas读取csv时,我得到以下数据帧

    a b c d
0 1 2 3 4 5
1 2 3 4 5 6

执行print df.columns时 我得到类似的东西:

Index([u'a', u'b', u'c', u'd'], dtype='object')

当我执行print df.iloc[0]时 我明白了:

a  2
b  3
c  4
d  5
Name: (0, 1)

我想要一些像

这样的数据框
a b c d col1 col2
0 1 2 3 4    5
1 2 3 4 5    6

我不知道我必须拥有多少列。但是我需要与标题后第一行中的值数一样多的列。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

这样做的一种方法是读取数据两次。一旦跳过第一行(原始列),第二行只读取列名(并跳过所有行)

df = pd.read_csv(header=None, skiprows=1)
columns = pd.read_csv(nrows=0).columns.tolist()
columns

输出

['a', 'b', 'c', 'd']

现在找到缺失列的数量并使用列表推导来创建新列

num_missing_cols = len(df.columns) - len(columns)
new_cols = ['col' + str(i+1) for i in range(num_missing_cols)]
df.columns = columns + new_cols
df

   a  b  c  d  col1  col2
0  0  1  2  3     4     5
1  1  2  3  4     5     6