当前位置: 首页 > 知识库问答 >
问题:

熊猫中一个特定列的名称未更改

莘睿
2023-03-14

我正在尝试更改数据框中一些列的名称。下面的代码可以更改除一列以外的所有列的名称。行为不端列的名称前后没有空格('Tot Cases/1M pop')。我想不出是什么问题。感谢您的建议。

df.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 216 entries, 0 to 215
Data columns (total 12 columns):
Country,Other       216 non-null object
TotalCases          216 non-null int64
NewCases            139 non-null object
TotalDeaths         178 non-null float64
NewDeaths           91 non-null object
TotalRecovered      207 non-null float64
ActiveCases         216 non-null int64
Serious,Critical    137 non-null float64
Tot Cases/1M pop    214 non-null float64
Deaths/1M pop       176 non-null float64
TotalTests          179 non-null float64
Tests/ 1M pop       179 non-null float64
dtypes: float64(7), int64(2), object(3)
memory usage: 20.4+ KB

df = df.rename(columns={'Country,Other': 'Country_or_Other','Serious,Critical': 'Serious_or_Critical','Tot Cases/1M pop':'Cases_1M_pop', 'Deaths/1M pop':'Deaths_per_1M_pop','Tests/ 1M pop':'Tests_per_1M_pop'})

df.head(3)
    Country_or_Other    TotalCases  NewCases    TotalDeaths     NewDeaths   TotalRecovered  ActiveCases     Serious_or_Critical     Tot Cases/1M pop    Deaths_per_1M_pop   TotalTests  Tests_per_1M_pop
0   World   3481349     83255.0     244663.0    5215.0  1120908.0   2115778     50860.0     447.0   31.4    NaN     NaN
1   China   82875   1.0     4633.0  NaN     77685.0     557     37.0    58.0    3.0     NaN     NaN
2   USA     1160774     29744.0     67444.0     1691.0  173318.0    920012  16475.0     3507.0  204.0   6931132.0   20940.0

for col in df.columns:
    print(col, len(col))
Country_or_Other 16
TotalCases 10
NewCases 8
TotalDeaths 11
NewDeaths 9
TotalRecovered 14
ActiveCases 11
Serious_or_Critical 19
Tot Cases/1M pop 16
Deaths_per_1M_pop 17
TotalTests 10
Tests_per_1M_pop 16

print (df.columns.tolist()) 
['Country_or_Other',
 'TotalCases',
 'NewCases',
 'TotalDeaths',
 'NewDeaths',
 'TotalRecovered',
 'ActiveCases',
 'Serious_or_Critical',
 'Tot\xa0Cases/1M pop',
 'Deaths_per_1M_pop',
 'TotalTests',
 'Tests_per_1M_pop']

print([(i, hex(ord(i))) for i in df.columns[8]])
    [('T', '0x54'), ('o', '0x6f'), ('t', '0x74'), ('\xa0', '0xa0'), ('C', '0x43'), ('a', '0x61'), ('s', '0x73'), ('e', '0x65'), ('s', '0x73'), ('/', '0x2f'), ('1', '0x31'), ('M', '0x4d'), (' ', '0x20'), ('p', '0x70'), ('o', '0x6f'), ('p', '0x70')]

共有2个答案

鞠晋
2023-03-14

您还可以通过直接寻址索引来重命名特定列,如下所示:

df.columns.values[8] = "New name"
封俊艾
2023-03-14

通过print(df.columns.tolist())测试后,您可以检查该值为多少:

\xa0实际上是拉丁文1(ISO 8859-1)中的不间断空格,也是chr(160)。你应该用空格代替它。

因此,请更改有问题的列名,如:

df = df.rename(columns={'Country,Other': 'Country_or_Other',
                       'Serious,Critical': 'Serious_or_Critical',
                       'Tot\xa0Cases/1M pop':'Cases_1M_pop',
                       'Deaths/1M pop':'Deaths_per_1M_pop',
                       'Tests/ 1M pop':'Tests_per_1M_pop'})
 类似资料:
  • 问题内容: 我有一个名为的数据框。如何重命名唯一的一列标题?例如到? 问题答案: data.rename(columns={‘gdp’:’log(gdp)’}, inplace=True) 在它接受一个字典作为一个PARAM演出,所以你只是传递一个字典一次入境。

  • 问题内容: 支持多级列名: 此功能非常有用,因为它允许“水平”地将同一数据框的多个版本附加到区分实例的列名称的第一级(在我的示例中)。 想象一下我已经有一个这样的数据框: 有没有一种好方法可以向列名添加另一个级别,类似于行索引: 问题答案: 无需创建元组列表 采用: 结果数据框: 2014年1月25日起提出要求

  • 问题内容: 我使用以下内容创建了一个数据框: 我想获得含有从每列的数据帧具有在他们的名字。这只是我的问题的一个简单版本,因此我的实际数据框将具有更多列。 问题答案: 替代方法:

  • 问题内容: 我在df中有几列相同的名称。需要重命名它们。无论如何,通常的重命名都会重命名,我可以将下面的blah重命名为blah1,blah4,blah5吗? 在[7]中: 问题答案: 我希望在Pandas中找到比通用Python解决方案更多的解决方案。如果Column的get_loc()函数找到带有“ True”值的重复项,则该掩码数组将返回掩码数组,“ True”值指向找到重复项的位置。然后,

  • 我有一个单一的CSV文件,在其中我想重命名一些列相同的名称。我的初始代码如下所示 我用这段代码从dataframe中提取了选定的列 此切片每隔三列获取一次。现在我想用相同的名称重命名每三列一次,但这样重命名我的列会出错 有没有办法在pandas中重命名多个同名列? 除了手动操作,还有其他建议吗?

  • 如何在python熊猫中获得索引列名称?下面是一个示例数据框: 我想做的是获取/设置数据框索引标题。这是我所尝试的: 有人知道怎么做吗?