【发布时间】: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()