更改部分DF的列名,不起作用

Posted

技术标签:

【中文标题】更改部分DF的列名,不起作用【英文标题】:Changing column name of part of DF, not working 【发布时间】:2021-06-01 21:03:55 【问题描述】:

您好,我想更改数据框中部分列的列名。 当我只打印想要更改为的部分时:palColAdj.iloc[:, 73:].columns.str[:-2] 我看到了我想看到的结果,但是当我尝试在原始数据框中更改它时,我看不到更改。

所以如果我写任何一个

palColAdj.iloc[:, 73:].columns=palColAdj.iloc[:, 73:].columns.str[:-2]

prodColAdj.iloc[:, 39:].columns=prodColAdj.iloc[:, 39:].columns.str[:-2].to_list()

然后我打印

prodColAdj.head()

我仍然看到原来的列名。这怎么可能?

【问题讨论】:

您是否就地更改了列名?如果您进行了希望在原始数据框中反映的任何更改,Pandas 通常有一个 inplace=True 选项,尽管我无法从问题中清楚地理解问题。 我猜问题是df.iloc[:, 73:] 的列不是df 的列。因此,您对df.iloc[:, 73:].columns 应用的更改不会影响df.columns。如果你想改变df.coumns,你可以做df.columns = df.iloc[:, :a].columns.to_list() + df.iloc[:, a:].columns.str[1:].to_list()或者使用df.rename()等等。 是的,谢谢您的解释和回答。这有效:prodColAdj.columns = prodColAdj.iloc[:, :39].columns.to_list() + prodColAdj.iloc[:, 39:].columns.str[:-2].to_list() 【参考方案1】:

这是一种方法。

df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
                    columns=['aaaa', 'bbbb', 'ccccc']) 
#    aaaa  bbbb  ccccc
# 0     1     2      3
# 1     4     5      6
# 2     7     8      9

cols = df2.columns.values

dict = 
for col in cols:
    dict[col] = col[:-2]

df.rename(dict, axis=1, inplace=True)
#      aa    bb    ccc
# 0     1     2      3
# 1     4     5      6
# 2     7     8      9

要选择特定的列,请编辑:

cols = df2.columns.values[0:2]
# array(['aaaa', 'bbbb'], dtype=object)

【讨论】:

以上是关于更改部分DF的列名,不起作用的主要内容,如果未能解决你的问题,请参考以下文章

循环遍历数据框列表时功能不起作用

SQL Server,临时表,SELECT 语句不起作用

Spring Boot/JPA:引用的保留字列名不起作用

SQL 列名是一个数据并且反透视不起作用

静态表视图标题的更改颜色不起作用

python pandas 从日期时间中提取年份:df['year'] = df['date'].year 不起作用