s1=pd.Series([100,200,300,400,500],index=['item1','item2','item3','item4','item5'])
s2=pd.Series([102,205,333,433,502],index=['item1','item2','item3','item4','item5'])
s3=pd.Series([101,2200,300,400,500],index=['item1','item2','item3','item4','item5'])
s4=pd.Series([102,2200,300,400,500],index=['item1','item2','item3','item4','item5'])
s5=pd.Series([104,2300,300,400,500],index=['item1','item2','item3','item4','item5'])
s6=pd.Series([105,2700,300,400,500],index=['item1','item2','item3','item4','item5'])
s7=pd.Series([105,2800,300,400,500],index=['item1','item2','item3','item4','item5'])
s8=pd.Series([306,2900,3900,400,500],index=['item1','item2','item3','item4','item5'])
s9=pd.Series([400,2090,300,400,500],index=['item1','item2','item3','item4','item5'])
s10=pd.Series([500,2900,3090,400,500],index=['item1','item2','item3','item4','item5'])
s11=pd.Series([600,2090,3090,400,500],index=['item1','item2','item3','item4','item5'])
s12=pd.Series([1000,200,300,400,500],index=['item1','item2','item3','item4','item5'])
这些是每个月的第1项,第2项,第3项,第4项和第5项的销售数据,也就是说s1数据是第1个月的数据,s2数据是第2个月的数据,以此类推。 我需要通过python编程找到item1在哪个月卖得最大,然后是item2,item3,item4,item5。
我试着这样做,只是检查我是否得到了值
def fn():
for i in range(12):
print(i)
print("Maximum Sales for Individual Items")
for i in s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12:
for j in range(5):
x=i[j]
fn(x)
将其组织到单个数据框架中,其中行索引是项,列索引指示月份。 然后可以使用.idxmax(axis=1)
获取每个项目的最大销售额月份。
df = pd.concat([s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12], keys=range(1,13), axis=1)
df.idxmax(1)
#item1 12
#item2 8
#item3 8
#item4 2
#item5 2
#dtype: int64
如果您想知道关系的所有月份,请查找每个项目的max
,并使用where
+stack
仅保留等于该max的值。 如果最大值很重要,这也会保留最大值。
df.where(df.eq(df.max(axis=1), axis=0)).stack()
#item1 12 1000.0
#item2 8 2900.0
# 10 2900.0
#item3 8 3900.0
#item4 2 433.0
#item5 2 502.0
#dtype: float64