如何获得str.split in place重命名列的结果?

2024-06-06 16:11:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我的df(从xlsx导入)有26列。其中21个名称以开头(荷兰语表示“成本”):kosten_

两个示例名称:kosten_farmaciekosten_generalistische_basis_ggz

为了改变这些名字,我当然可以写一本字典。但是有这么多的专栏,我认为最好先去掉:kosten_部分

下面的代码正确地做到了这一点,即:我得到了一个没有:kosten_的列名列表

df.columns.str.split('kosten_').str[1]

现在我想把它放在我的df中。所以我试着:

df.rename(columns={(df.columns.str.split('kosten_').str[1])})

这会产生一个错误:TypeError: unhashable type: 'Index'

是否可以使用df.rename。像上面那样? 也许还有别的建议


Tags: columns名称示例dfbasisxlsx名字成本
2条回答

输入

df = pd.DataFrame(np.random.random((10,2)),columns=['kosten_farmacie','kosten_generalistische_basis_ggz']) 
>>> df
   farmacie  generalistische_basis_ggz
0  0.048584                   0.242719
1  0.099760                   0.376688
2  0.293001                   0.724548
3  0.970689                   0.746782
4  0.952711                   0.992198
5  0.243361                   0.614406
6  0.099160                   0.658806
7  0.107666                   0.646534
8  0.040894                   0.346090
9  0.244920                   0.401649

试试这个:

df.columns = [str(col).split('kosten_')[1] for col in df.columns]

输出

   farmacie  generalistische_basis_ggz
0  0.048584                   0.242719
1  0.099760                   0.376688
2  0.293001                   0.724548
3  0.970689                   0.746782
4  0.952711                   0.992198
5  0.243361                   0.614406
6  0.099160                   0.658806
7  0.107666                   0.646534
8  0.040894                   0.346090
9  0.244920                   0.401649

可以将columns属性直接与replace一起使用

df.columns = df.columns.str.replace('kosten_','')

相关问题 更多 >