我有一个csv文件,显示订单上的零件。列包括延迟天数、数量和商品
我需要将数据按延迟天数和商品数量进行分组。但是,晚到的天数需要按范围分组
>;56
&燃气轮机;35及<;=56
&燃气轮机;14及<;=35
&燃气轮机;0及<=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