更改部分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的列名,不起作用的主要内容,如果未能解决你的问题,请参考以下文章