重命名Pandas数据框中的无名列

65

我的csv文件的第一列没有列名,我想要重命名它。通常,我会执行 data.rename(columns={'oldname':'newname'}, inplace=True),但是这个csv文件中没有名称,只有''。


2
这个 csv 文件是如何生成的?如果它是从 pandas 导出而来,那有时候第一列会被认为是索引。在这种情况下,你可以用 pd.read_csv('file.csv', index_col=[0]) 来读取并告诉 pandas。 - EdChum
9个回答

59

您可以使用data.head()查看当前数据框。

如果它返回列标题为'Unnamed: 0',则可以按以下方式将其重命名:

data.rename( columns={'Unnamed: 0':'new column name'}, inplace=True )

11
DataFrame打印时我的列没有名称,只显示了第0列,我使用的技术并没有帮助我,你能否建议其他替换名称的方法? - id101112

28

当您加载CSV时,请使用选项'index_col'

pd.read_csv('test.csv', index_col=0)

index_col: 整数或序列或False,默认为None。用作DataFrame行标签的列。如果给定了一个序列,则使用MultiIndex。如果您有一个带有每行末尾分隔符的格式错误文件,可以考虑将index_col=False以强制pandas不使用第一列作为索引(行名称)。 http://pandas.pydata.org/pandas-docs/dev/generated/pandas.io.parsers.read_csv.html

我认为这并没有解决问题。我尝试过了,但它并没有起作用。 - KansaiRobot

13

可以通过以下方式优化解决方案:data.rename( columns={0 :'新列名'}, inplace=True )。不需要使用'Unnamed: 0',只需使用列数,即此处为0,然后提供'新列名'


4
使用 Pandas 1.0.3 版本时,通过一个字典以索引键来重命名列似乎不起作用,它只适用于行。 - Daniel Himmelstein
事实上,我认为它只适用于行,因为实际的DataFrame索引使用连续的整数作为行名称。 - Daniel Himmelstein

11

请尝试以下代码:

df.columns = ['A', 'B', 'C', 'D']


1
最好和最简单的解决方案! - bing-nagata-smirnov

11

这应该可以工作:

data.rename( columns={0 :'Articles'}, inplace=True )

5

第一列/行可能没有名称,因为它是索引而不是列/行。这就是为什么你需要像这样重命名索引:

df.index.name = 'new_name'

+1,因为我搜索了很久都没有找到方法 - 当你只想将内容复制/粘贴到Excel中时,这真的非常方便。来吧,Python,所有东西默认应该都有名称! - spioter
我已经搜索了好几天,谢谢! - Carlo

2
通常空白列的名称是基于其索引命名的。例如,假设第 4 列未命名。
df.rename({'unnamed:3':'new_name'},inplace=True)

通常这样命名是因为列的索引从零开始。

1
它有一个名字,名字只是''(空字符串)。
In [2]: df = pd.DataFrame({'': [1, 2]})

In [3]: df
Out[3]: 

0  1
1  2

In [4]: df.rename(columns={'': 'A'})
Out[4]: 
   A
0  1
1  2

1
你需要使用inplace=True来直接更改df。 df.rename(columns={'': 'A'}, inplace=True) - user2602740
我尝试使用 inplace = True,但它返回一个空的数据框,不确定发生了什么,是否有其他解决方案? - id101112
3
如果有人需要,我可以提供如下翻译:在pandas 0.23.4中,我需要使用.rename(columns={'Unnamed: 0': 'id'})来重命名第一个未命名的列。 - Yohanes Gultom

0
另一种解决方案是调用数据框的列并使用replace:
df.columns = df.columns.str.replace('Unnamed: 0','new_name')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接