为什么我不能重命名列?
问题描述:
我有以下DF:为什么我不能重命名列?
TAN.SK SHA.LO
A 0.05 0.01
S 0.04 0.44
D 0.08 -0.18
我想新的DF是这样的:
TAN SHA
A 0.05 0.01
S 0.04 0.44
D 0.08 -0.18
基本上从列名称中删除.SK
和.LO
这是我尝试过:
df.rename(columns=lambda x: x.split('.')[0])
df.columns=df.split('.')[0]
第二种情况下完美的作品在df.index
答
DataFrame.rename()不会改变的地方数据帧(每默认)的情况下,所以你必须把它分配回:
In [134]: df = df.rename(columns=lambda x: x.split('.')[0])
In [135]: df
Out[135]:
TAN SHA
A 0.05 0.01
S 0.04 0.44
D 0.08 -0.18
或
In [139]: df.rename(columns=lambda x: x.split('.')[0], inplace=True)
In [140]: df
Out[140]:
TAN SHA
A 0.05 0.01
S 0.04 0.44
D 0.08 -0.18
答
我认为更快,如果很多列,使用向量化解决方案str.split
,然后选择:
print (df.columns.str.split('.'))
Index([['TAN', 'SK'], ['SHA', 'LO']], dtype='object')
df.columns = df.columns.str.split('.').str[0]
print (df)
TAN SHA
A 0.05 0.01
S 0.04 0.44
D 0.08 -0.18
谢谢Psidom,我的错写错了 – ge00rge