首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过pandas.cut()解决这类问题?

如何通过pandas.cut()解决这类问题?
EN

Stack Overflow用户
提问于 2020-05-16 14:33:34
回答 1查看 25关注 0票数 2

我有我的数据作为

代码语言:javascript
复制
data = pd.DataFrame({'A':[3,50,50,60],'B':[49,5,37,59],'C':[15,34,43,6],'D':[35,39,10,25]})

如果我这样使用cut

代码语言:javascript
复制
p = ['A','S','T','U','V','C','Z']
bins = [0,30,35,40,45,50,55,60]
data['A*'] = pd.cut(data.A,bins,labels=p)
print(data)

我得到了

代码语言:javascript
复制
    A   B   C   D  A*
0   3  49  15  35  A
1  50   5  34  39  V
2  50  37  43  10  V
3  60  59   6  25  Z

我该怎么剪才能得到

代码语言:javascript
复制
    A   B   C   D  A*
0   3  49  15  35  3A
1  50   5  34  39  50V
2  50  37  43  10  50V
3  60  59   6  25  60Z

我试过了,但不起作用

代码语言:javascript
复制
for x in data.A:
    p = [str(x)+'A',str(x)+'S',str(x)+'T',str(x)+'U',str(x)+'V',str(x)+'C',str(x)+'Z']
bins = [0,30,35,40,45,50,55,60]

它给了我这个

代码语言:javascript
复制
    A   B   C   D  A*
0   3  49  15  35  60A
1  50   5  34  39  60V
2  50  37  43  10  60V
3  60  59   6  25  60Z
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-16 14:38:05

也可以从pd.cut中将列A转换为字符串和类别,并连接在一起:

代码语言:javascript
复制
p = ['A','S','T','U','V','C','Z']
bins = [0,30,35,40,45,50,55,60]
data['A*'] = data.A.astype(str) + pd.cut(data.A,bins,labels=p).astype(str)
print(data)
    A   B   C   D   A*
0   3  49  15  35   3A
1  50   5  34  39  50V
2  50  37  43  10  50V
3  60  59   6  25  60Z

编辑:

对于所有列的处理,可以使用DataFrame.apply

代码语言:javascript
复制
data = data.apply(lambda x: x.astype(str) + pd.cut(x,bins,labels=p).astype(str))
print(data)
     A    B    C    D
0   3A  49V  15A  35S
1  50V   5A  34S  39T
2  50V  37T  43U  10A
3  60Z  59Z   6A  25A
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61832851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档