pandas 获取带连字符分隔格式的连续数字

bqf10yzr  于 2023-03-16  发布在  其他
关注(0)|答案(1)|浏览(129)

我需要创建一个基于第一列生成数字的字典。这些数字将基于列“类型”中给定的值聚集在一起。例如:Double会有像2-3这样的数字表示它们是集合{2,3},Three会有4-6表示它们是集合{4,5,6}。
我的 Dataframe 应该如下所示:
| 类型|人数|
| - ------|- ------|
| 单身|1个|
| 双倍|二、三|
| 三个|四、六|
| 四个|七至十|
| 单身|十一|
| 四个|十二至十五|
| 双倍|十六至十七岁|
我还没有尝试过,因为我不知道如何去做。我只能为每一行生成像1,2,3这样的序列号,而不是所需的输出。不知道Pandas或Numpy是否可以解决这样的问题
我已经找到了this,但不知道如何使用基于字典的要求。

w6lpcovy

w6lpcovy1#

试试这个:

d = {'Single':1,'Double':2,'Three':3,'Four':4}
(df['Type'].map(lambda x: [1]*d.get(x))
.explode()
.cumsum()
.astype(str)
.groupby(level=0)
.agg(lambda x: '-'.join([x.iloc[0],x.iloc[-1]] if len(x)>1 else x)))

输出:

0        1
1      2-3
2      4-6
3     7-10
4       11
5    12-15
6    16-17

相关问题