我想将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
我不知道我必须拥有多少列。但是我需要与标题后第一行中的值数一样多的列。我怎样才能做到这一点?
答案 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