如何使用熊猫将连续数字转换为类别?

s_khan92

我正在寻找这个问题的解决方案几天,但很遗憾没有成功。

我在这样的列中有连续的值:

Val: 1, 15, 2, 91, 52, 126

我需要将这些数字转换为类别作为间隔。例如,第一个数字应位于类别(1-10)中

我知道我们可以定义间隔并使用转换数据 pd.cut

pd.cut(df.val, right=False)

但是我的问题是我无法定义间隔,因为我拥有数百万的价值。

理想的解决方案是我可以定义间隔范围,然后它会自动搜索值并将其转换为该类别。

这是我理想的输出:

Val     Val_Cat
1        1-10
15       10-20
2        1-10
91       90-100
52       50-60
126      120-130
耶斯雷尔

一种想法是使用数学与整数除法通过//通过10,然后由多个10和最后转换为字符串(与repalce如果需要的话):

s = df['Val'] // 10 * 10
df['new'] = s.replace(0, 1).astype(str) + '-' + (s + 10).astype(str)
print (df)
   Val  Val_Cat      new
0    1     1-10     1-10
1   15    10-20    10-20
2    2     1-10     1-10
3   91   90-100   90-100
4   52    50-60    50-60
5  126  120-130  120-130

f-strings替代

df['new'] = df['Val'].map(lambda x: f'{x//10*10}-{(x//10*10)+10}')
print (df)
   Val  Val_Cat      new
0    1     1-10     0-10
1   15    10-20    10-20
2    2     1-10     0-10
3   91   90-100   90-100
4   52    50-60    50-60
5  126  120-130  120-130

您可以通过以下方式更改带有割的解决方案:

bins = np.arange(0, df['Val'].max() // 10 * 10 + 20, 10)

df['new'] = pd.cut(df.Val, bins = bins, right=False)
print (df)
   Val  Val_Cat         new
0    1     1-10     [0, 10)
1   15    10-20    [10, 20)
2    2     1-10     [0, 10)
3   91   90-100   [90, 100)
4   52    50-60    [50, 60)
5  126  120-130  [120, 130)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将数字转换为熊猫列中的类别

如何将非连续数字转换为连续数字?

熊猫:将类别转换为数字

如何将数字列表转换为连续数字列表

如何将列中的非连续整数转换为熊猫中的连续整数

使用熊猫库将非数字转换为数值

如何使用熊猫日期时间将数字转换为日期(通过使用这些数字作为与今天日期的距离)

将熊猫数据框转换为数字

如何使用 PHP 将数字转换为货币数字?

如何通过熊猫中的等效分区将连续值转换为离散值

如何将句子转换为类别?

熊猫将所有对象列强制转换为类别

熊猫:将多个类别转换为假人

如何将scikit的30个类别转换为数字

Pandas:将类别转换为数字时如何处理 nan 值

如何将数字“物种”转换为鸢尾花数据集中的类别

如何使用熊猫将数字字符串(例如200.13K和1.2M)转换为整数?

如何使用熊猫将多值行转换为列?

将数字的向量转换为R中的连续整数

如何使用javascript将数字转换为字符?

如何使用switch()语句将数字转换为字母等级?

如何使用“-”将日期作为数字转换为日期

如何使用Javascript将字母转换为数字?

如何使用Invantive SQL将文本转换为数字?

如何使用python将字母转换为数字?

如何使用掩码将char转换为数字

如何使用javascript将数字刻度转换为颜色亮度?

如何在R中从类别转换为数字

如何摆脱大熊猫将Excel工作表中的大量数字转换为指数?