按多个值分组的列的平均值

时间:2021-06-22 13:53:04

标签: python pandas pandas-groupby mean

我是熊猫的新手,我正在为此苦苦挣扎: 我有一张这样的桌子(时间长得多):

enter image description here

我想获得特定项目在特定时间、特定日期的平均计数(因此按 3 个特定值分组)。 在这个例子中,如果我想要周一售出的 itemname1 的平均数量在 8 到 9 之间,那么输出将为 4。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

在 Item、Day 和 Hour 上使用 groupby 函数:

# setup

import pandas as pd

data = [
    ["Monday", "8 to 9", "itemname1", "drinks", 3],
    ["Monday", "8 to 9", "itemname1", "drinks", 5],
    ["Monday", "12 to 13", "itemname2", "drinks", 1],
    ["Tuesday", "8 to 9", "itemname3", "drinks", 1],
    ["Tuesday", "8 to 9", "itemname1", "drinks", 2],
    ["Tuesday", "9 to 10", "itemname2", "drinks", 3],
    ["Tuesday", "12 to 13", "itemname1", "drinks", 2]
]

df = pd.DataFrame(data, columns=["Day", "Hour", "Item", "Category", "Count"])
means = df.groupby(["Item", "Day", "Hour"]).agg({"Count": "mean"})
example = means.loc[("itemname1",  "Monday",   "8 to 9")].values[0]

print(example)

输出

4