在pandas中创建通用标头字段

时间:2018-12-21 18:19:21

标签: python pandas

我有以下pandas数据框:

df = pd.read_csv(file, header=None)

它给了我类似以下的东西:

                       0       1
0                 123455       1
1                 132750       2

然后我需要手动添加数据大小的标题行,这样数据最终看起来像这样:

                  Field 1      Field 2
0                 123455       1
1                 132750       2

要获取标题名称,我可以这样做:

['Field %s' % (n+1) for n in range(df.shape[1])]

然后如何将其添加为标题?请注意,在获取数据之前我不知道标题是什么,并且我不想再次“重新加载”数据帧。我只想用“字段1”,“字段2”覆盖“ 0”,“ 1”的标题。怎么办?

3 个答案:

答案 0 :(得分:4)

只需分配给df.columns

df.columns = ['Field %s' % (n+1) for n in range(df.shape[1])]

使用Python 3.6(PEP 498),您可以使用f字符串:

df.columns = [f'Field {n+1}' for n in range(df.shape[1])]

但是,请注意,可能有更清晰的方法来实现所需的目标:

df.columns = np.arange(1, df.shape[1]+1)
df = df.add_prefix('Field ')

答案 1 :(得分:2)

我认为应该这样做

>>> df.rename(columns = {c : 'Field {}'.format(int(c) + 1) for c in range(len(df.columns))})

   Field 1  Field 2
0   123455        1
1   132750        2

答案 2 :(得分:0)

您可以重新编写索引行。例如:

>>> df=pd.read_csv('/Users/david/Desktop/hi.csv',header=None)
>>> df
    0  1
0  123455  1
1  132750  2
>>> df.columns = ['Field %s' % (n+1) for n in range(df.shape[1])]
>>> df
   Field 1  Field 2
0   123455        1
1   132750        2