无法重命名Pandas DataFrame中的第一列

时间:2018-09-18 11:57:37

标签: python pandas dataframe

已经使用pandas多年了,但是从未见过这种行为。我使用版本0.18.1。我有一个包含以下内容的.csv文件:

id;foo;bar
100001;11-22;spam
100002;22-33;spamspam

我正在将其读入DataFrame:

pd.read_csv(csv_path, sep=';', index_col=False, encoding='UTF-8')

这就是我得到的:

      id    foo       bar
0  100001  11-22      spam
1  100002  22-33  spamspam

现在,我想将id字段重命名为new_id

df.rename(index=str, columns={'id': 'new_id'}, inplace=True)

但是,它使id列具有相同的名称。

id列中有df.columns

df.columns
Index([u'id', u'foo', u'bar'], dtype='object')

其索引为:

df.index
Index([u'0', u'1'], dtype='object')

尝试重命名foobar列会按预期工作:

df.rename(index=str, columns={'foo': 'new_foo'}, inplace=True)

      id new_foo       bar
0  100001   11-22      spam
1  100002   22-33  spamspam

我认为id关键字可能有一些特殊之处,但是可以通过将id列重命名为其他内容来观察到相同的行为。 如何重命名数据框中的第一列?

2 个答案:

答案 0 :(得分:4)

看起来像个奇怪的错误,您可以分配新的列名称:

pandas.to_csv()

在熊猫df.columns = ['new_id'] + df.columns.tolist()[1:] print (df) new_id foo bar 0 100001 11-22 spam 1 100002 22-33 spamspam 中,{0.2} rename运行良好。

如果id有问题,则在pandas 0.19.0中已解决。

可能的解决方案是在您的熊猫版本中更改BOM

encoding

答案 1 :(得分:1)

我对相同的数据做了同样的事情。对我来说很好。因此无法找到错误。 但是可以告诉您您可能已经知道的另一种选择。

df.columns = ['new_id', 'foo', 'bar']