按值范围分组数据

我有一个csv文件,显示订单上的零件。列包括延迟天数、数量和商品

我需要将数据按延迟天数和商品数量进行分组。但是,晚到的天数需要按范围分组

>56
&燃气轮机;35及<=56
&燃气轮机;14及<=35
&燃气轮机;0及&lt=14

我希望我能用一个口述的方式。像这样的

{'Red':'>56、'Amber':'>35和<=56'、'Yellow':'>14和<=35'、'White':'>0和<=14'}

我在寻找这样的结果

红琥珀黄白
STRSUB 56 60 74 40
图20 67 87 34

我刚接触熊猫,所以我不知道这是否可能。谁能给点建议吗

谢谢

假设您从以下数据开始:

df=pd.DataFrame({'ID':('STRSUB BOTDWG'.split())*4,
“迟到天数”:[60,60,50,50,20,20,10,10],
‘数量’:[56,20,60,67,74,87,40,34]})
#延迟天数ID数量
#0 60 STRSUB 56
#160图20
#2 50 STRSUB 60
#350图67
#4 20 STRSUB 74
#5 20图87
#6 10 STRSUB 40
#7 10图34

然后,您可以使用pd.cut查找状态类别。请注意,默认情况下,pd.cut将序列df['Days Late']拆分为半开放的间隔、(-1,14]、(14,35]、(35,56]、(56,365)]类别:

df['status']=pd.cut(df['Days Late'],bin=[-1,14,35,56,365],labels=False)
labels=np.array('白黄琥珀红'.split())
df['status']=标签[df['status']]
del df[‘晚了几天’]
打印(df)
#ID数量状态
#0 STRSUB 56红色
#1.20红色
#2 STRSUB 60琥珀色
#3.67琥珀色
#4 STRSUB 74黄色
#5.黄色
#6 STRSUB 40白色
#7.34白色

现在使用pivot以所需形式获取数据帧:

df=df.pivot(index='ID',columns='status',values='quantity')

并使用reindex获得所需的行和列顺序:

df=df.reindex(列=标签[:-1],索引=df.index[:-1])


因此,

将numpy导入为np
作为pd进口熊猫
df=pd.DataFrame({'ID':('STRSUB BOTDWG'.split())*4,
“迟到天数”:[60,60,50,50,20,20,10,10],
‘数量’:[56,20,60,67,74,87,40,34]})
df['status']=pd.cut(df['Days Late'],bin=[-1,14,35,56,365],labels=False)
labels=np.array('白黄琥珀红'.split())
df['status']=标签[df['status']]
del df[‘晚了几天’]
df=df.pivot(index='ID',columns='status',values='quantity')
df=df.reindex(列=标签[:-1],索引=df.index[:-1])
打印(df)

屈服

红琥珀黄白
身份证件
STRSUB 56 60 74 40
图20 67 87 34

发表评论