gpt4 book ai didi

python - Pandas 数据框字符列到整数

转载 作者:太空狗 更新时间:2023-10-30 02:15:34 26 4
gpt4 key购买 nike

我的数据框如下:

+--------------+--------------+----+-----+-------+
| x1 | x2 | km | gmm | class |
+--------------+--------------+----+-----+-------+
| 180.9863129 | -0.266379416 | 24 | 19 | T |
| 52.20132828 | 28.93587875 | 16 | 14 | I |
| -17.17127419 | 29.97013283 | 17 | 16 | D |
| 37.28710938 | -69.96691132 | 3 | 6 | N |
| -132.2395782 | 27.02541733 | 15 | 18 | G |
| -12.52811623 | -87.90951538 | 22 | 5 | S |

类(class)基本上是字母表(A 到 Z)。但是,我想要像 A=1, B=2... Z= 26 这样的输出。

现在,对于普通的 python 列表,我可以将它们转换为 ord(c.lower()) - ord('a')) % 9) + 1

但是,如何在数据框中做到这一点

最佳答案

选项 1
假设您的列 具有单个大写字符,您可以在 View 上做一些算术运算:

df['class'] = df['class'].values.astype('<U1').view(np.uint32) - 64

df
x1 x2 km gmm class
0 180.986313 -0.266379 24 19 20
1 52.201328 28.935879 16 14 9
2 -17.171274 29.970133 17 16 4
3 37.287109 -69.966911 3 6 14
4 -132.239578 27.025417 15 18 7
5 -12.528116 -87.909515 22 5 19

这是我能想到的处理大数据最快的方法。

如果您的数据可能不稳定,您可以考虑这样的预处理步骤:

df['class'] = df['class'].str.upper().str[0]

选项 2
顺序

df['class'] = [ord(c) - 64 for c in df['class']]

或者,

df['class'] = df['class'].apply(ord) - 64

df
x1 x2 km gmm class
0 180.986313 -0.266379 24 19 20
1 52.201328 28.935879 16 14 9
2 -17.171274 29.970133 17 16 4
3 37.287109 -69.966911 3 6 14
4 -132.239578 27.025417 15 18 7
5 -12.528116 -87.909515 22 5 19

关于python - Pandas 数据框字符列到整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49503173/

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