【问题标题】:Pandas Dataframe - Renaming of last column doesn't workPandas Dataframe - 重命名最后一列不起作用
【发布时间】:2020-09-03 23:09:27
【问题描述】:

我在重命名数据框的最后一列时遇到问题。我的数据框有 47 列,我可以重命名除最后一列之外的所有列。

data.rename(
{
    "Electricity:Zone:B001 [J](TimeStep)": "strom_verbr_zone",
    "Electricity:Facility [J](TimeStep)": "strom_verbr_ges",
    "B001FEOST:Surface Shading Device Is On Time Fraction [](TimeStep)": "f_verschattung_io",
    "Gas:Facility [J](TimeStep)": "gas_verbr"
}, axis=1, inplace=True)

运行此代码后,除最后一列之外,每列名称都会发生变化。 “Gas:Facility J”列不会重命名。也尝试过其他方式,但直到现在都没有成功。 有谁知道如何使它工作或为什么不重命名?

【问题讨论】:

  • 仔细检查列名的拼写
  • 尝试将更改后的名称列表传递给data.columns,它可能会起作用,但请记住顺序。而且,它会省去很多写名字的麻烦。
  • @ilyankou 感谢您的提示。它与拼写有关。最后一列名称的末尾有一些我不认识的空格。

标签: pandas dataframe rename


【解决方案1】:

试试吧:

# in the same order as you need
data.columns = ["strom_verbr_zone", "strom_verbr_ges", "f_verschattung_io", "gas_verbr"]

测试使用提供的名称重命名空数据框中的最后一列:

# created a blank dataframe with just the headers with given column names
df = pd.DataFrame(columns=["Electricity:Zone:B001 [J](TimeStep)", 
"Electricity:Facility [J](TimeStep)", 
"B001FEOST:Surface Shading Device Is On Time Fraction [](TimeStep)",
"Gas:Facility [J](TimeStep)" ])

print(df.columns)

输出:

Index(['Electricity:Zone:B001 [J](TimeStep)',
       'Electricity:Facility [J](TimeStep)',
       'B001FEOST:Surface Shading Device Is On Time Fraction [](TimeStep)',
       'Gas:Facility [J](TimeStep)'],
      dtype='object')

.

# renamed just the last column
df.rename(
{
    "Gas:Facility [J](TimeStep)": "gas_verbr"
}, axis=1, inplace=True)

print(df.columns)

仅重命名最后一列后的输出:

Index(['Electricity:Zone:B001 [J](TimeStep)',
       'Electricity:Facility [J](TimeStep)',
       'B001FEOST:Surface Shading Device Is On Time Fraction [](TimeStep)',
       'gas_verbr'],
      dtype='object')

【讨论】:

  • 我的数据框有 47 列。有没有办法只更改最后一列的名称,还是我真的必须输入所有 47 列?
  • 在这种情况下 data.rename() 更好。理想情况下它应该工作。正如上面其中一个 cmets 所建议的那样,您能否检查拼写和空格。
  • 另外,我尝试重命名最后一列,如果拼写与您提到的相同,那么它对我来说工作正常。测试运行结果已添加到我的答案中
  • 这确实与拼写有关。我从中获取数据的程序似乎在最后一个列名的末尾添加了一些空格。感谢您的帮助。
【解决方案2】:

可以试试:

cols = data.columns 

cols[-1] = 'new name'

data.columns = cols

【讨论】:

    猜你喜欢
    • 2019-07-21
    • 2013-08-17
    • 2019-12-01
    • 2021-04-24
    • 2017-03-02
    • 2017-03-05
    • 2013-11-19
    相关资源
    最近更新 更多