提问者:小点点

在python系列中的哪个月份查找项目最大销售额?


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)

共1个答案

匿名用户

将其组织到单个数据框架中,其中行索引是项,列索引指示月份。 然后可以使用.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