获得最少的熊猫数据框销售额

时间:2020-01-26 10:25:37

标签: python-3.x pandas

Datarame

Fresh Milk Grocery Channel
20     50     80    Hotel
40     10     30    Restaurant
100    90     20    Cafe
120    150    80    Hotel
450    910    30    Restaurant  
10     90     20     Cafe
205    50     80    Hotel
403    10     30    Restaurant
10     90     20    Cafe

如何获得最少的渠道销售并打印渠道名称。

我认为我们需要进行分组。尝试了一下,但没有成功。谁能建议如何实现这一目标?

3 个答案:

答案 0 :(得分:3)

您首先需要将所有项目组合到一栏中:

df['sum_of_items'] = df.sum(axis=1)

然后您可以使用一个简单的分组依据:

df.groupby('Channel')['sum_of_items'].sum()

结果是:

Channel
Cafe           450
Hotel          835
Restaurant    1913

答案 1 :(得分:0)

案例1:至少考虑所有列

频道最小值

首先我们计算每个频道的总数,我们可以将DataFrame.meltDataFrame.groupby结合使用:

total_channel = df.melt('Channel').groupby('Channel').value.sum()

total_channel = df.sum(axis=1).groupby(df['Channel']).sum()

输出

print(total_channel)

Channel
Cafe           450
Hotel          835
Restaurant    1913
Name: value, dtype: int64

然后我们使用Series.idxmin

total_channel.idxmin()
#'Cafe'

按栏显示2分钟

df.groupby('Channel').sum().idxmin()
Fresh       Cafe
Milk       Hotel
Grocery     Cafe
dtype: object

答案 2 :(得分:0)

因此,您可以像这样创建一列所有三列的总和,然后获得花费最少的渠道。


df['Sales'] = df['Fresh'] + df['Milk'] + df['grocery']


df.groupby('Channel')['Sales'].sum().reset_index().sort_values('Sales', ascending = True).reset_index(drop=True).loc[0]