给定一个数字序列,首先转换为interval,然后按照数字序列转换为字典,然后再用DataFrame中的一个列映射它,如下面的DataFrame所示。
查询-1如何创建从上述序列到字典的间隔
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函数拍摄的屏幕所示
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)预期产出**

发布于 2022-02-09 09:07:52
您想要的结果可以使用pd.cut获得。它从一个连续变量创建一个分类变量。
df['mapped'] = pd.cut(df['col1'], right=False, bins=given_sequence+[float('inf')],
labels=['<2', '2-5', '5-8','8-10','10-15','>15'])输出:
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发布于 2022-02-09 09:13:33
如果字典中的值是按示例数据排序的,则从字典键中添加bins和labels参数,并在cut中添加值
#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()))https://stackoverflow.com/questions/71045368
复制相似问题