首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中使用map函数的映射间隔

python中使用map函数的映射间隔
EN

Stack Overflow用户
提问于 2022-02-09 07:16:47
回答 2查看 405关注 0票数 1

给定一个数字序列,首先转换为interval,然后按照数字序列转换为字典,然后再用DataFrame中的一个列映射它,如下面的DataFrame所示。

查询-1如何创建从上述序列到字典的间隔

代码语言:javascript
复制
given_sequence = [-100, 2, 5, 8, 10, 15]# Given sequence

idict = {-100: '<2',
2:'2-5',
5:'5-8',
8:'8-10',
10:'10-15',
15:'>15'}

查询-2如何映射到列,如下面用字典和map函数拍摄的屏幕所示

代码语言:javascript
复制
import pandas as pd
import random
# create an Empty DataFrame object
df = pd.DataFrame()
df['col1'] = [random.randint(1, 10) for i in range(0, 10)]
df['mapped']  = df['col1'].map(idict)

预期产出**

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-09 09:07:52

您想要的结果可以使用pd.cut获得。它从一个连续变量创建一个分类变量。

代码语言:javascript
复制
df['mapped'] = pd.cut(df['col1'], right=False, bins=given_sequence+[float('inf')], 
                      labels=['<2', '2-5', '5-8','8-10','10-15','>15'])

输出:

代码语言:javascript
复制
   col1 mapped
0     6    5-8
1     1     <2
2    10  10-15
3     7    5-8
4     7    5-8
5     8   8-10
6     4    2-5
7     7    5-8
8    10  10-15
9     6    5-8
票数 2
EN

Stack Overflow用户

发布于 2022-02-09 09:13:33

如果字典中的值是按示例数据排序的,则从字典键中添加binslabels参数,并在cut中添加值

代码语言:javascript
复制
#if necessary sorting dict by keys
#idict = {k: v for k, v in sorted(idict.items(), key=lambda item: item[0])}

df['mapped'] = pd.cut(df['col1'], 
                      right=False, 
                      bins=[*list(idict.keys()), np.inf], 
                      labels=list(idict.values()))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71045368

复制
相关文章

相似问题

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