gpt4 book ai didi

python - 以数字方式重新排序 df.columns alpha

转载 作者:行者123 更新时间:2023-11-28 20:55:29 24 4
gpt4 key购买 nike

我有一个 df 如下:

        Store   Spend_1 Spend_2 Spend_3 Spend_4 Variance_1  Variance_2  Variance_3  Variance_4
0 1 200 230 189 200 -14 16 -6 18
1 2 224 104 240 203 -17 -11 17 -18
2 3 220 168 131 210 10 -9 12 19
3 4 143 187 139 188 -1 -17 -20 -9
4 5 179 121 162 131 6 -25 5 20
5 6 208 158 140 191 16 -14 -22 -6

我正在尝试对列名称应用自定义排序以按如下方式对其进行排序:

    Store   Spend_1 Variance_1  Spend_2 Variance_2  Spend_3 Variance_3  Spend_4 Variance_4
0 1 200 -14 230 16 189 -6 200 18
1 2 224 -17 104 -11 240 17 203 -18
2 3 220 10 168 -9 131 12 210 19
3 4 143 -1 187 -17 139 -20 188 -9
4 5 179 6 121 -25 162 5 131 20
5 6 208 16 158 -14 140 -22 191 -6

我试过简单的 sorted 但显然这适用于字母顺序,忽略末尾的整数。

我玩弄过 enumerating 作为 numbercols df.columns 将字符串更改为整数,应用排序,然后使用 iloc 中的数字,但我不确定如何以这种方式应用自定义排序。

有人能帮忙吗?

最佳答案

想法是使用key parameetr by 2 values - values after _转换为 inetegr第一个值在 _ 之前的 s , 但解决方案适用于所有列而不首先使用 df.columns[1:] , 所以 last 由 df.columns[:1].tolist() 添加到第一列:

cols = df.columns[:1].tolist() +sorted(df.columns[1:], 
key=lambda x: (int(x.split('_')[1]), x.split('_')[0]))

df = df[cols]
print (df)
Store Spend_1 Variance_1 Spend_2 Variance_2 Spend_3 Variance_3 \
0 1 200 -14 230 16 189 -6
1 2 224 -17 104 -11 240 17
2 3 220 10 168 -9 131 12
3 4 143 -1 187 -17 139 -20
4 5 179 6 121 -25 162 5
5 6 208 16 158 -14 140 -22

Spend_4 Variance_4
0 200 18
1 203 -18
2 210 19
3 188 -9
4 131 20
5 191 -6

关于python - 以数字方式重新排序 df.columns alpha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56663902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com