已经使用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')
尝试重命名foo
或bar
列会按预期工作:
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
列重命名为其他内容来观察到相同的行为。 如何重命名数据框中的第一列?
答案 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']