gpt4 book ai didi

python - Pandas 中的 Groupby,用 [] 填充缺失的组

转载 作者:行者123 更新时间:2023-11-28 18:40:27 26 4
gpt4 key购买 nike

欢迎就此问题的更准确标题提供任何帮助..

我有一个 pandas 数据框,其中包含记录日期和客户在该日期消费的元素的客户级观察。看起来像这样。

df
store day items
a 1 4
a 1 3
a 2 1
a 3 5
a 4 2
a 5 9
b 1 1
b 2 3

此数据集中的每个观察值都属于一个独特的商店日组合,但每个商店日观察值都以消耗的正数商品为条件列出,即 df[items] > 0每对商店日。

所以我没有,例如<​​/p>

b         3      0
b 4 0
b 5 0

等等

我需要按 storeday 对这个数据帧进行分组,然后对每个 store-day 组中的所有 obs 运行一些操作。

但是,我希望这些行存在并且长度为 0(空集),但我不确定执行此操作的最佳方法。这是一个非常简单的玩具数据集。真正的是非常大的。

我真的不想在使用 df.groupby(['store', 'day']) 之前添加观察结果,因为我对每个商店日组运行其他计算,使用每个组的长度作为特定商店和日期中记录的客户数量的度量。因此,如果我添加这些观察值 b3b4,那么看起来有 2 位顾客在第 3 天和第 4 天光顾了商店 b - 但实际上没有 (每个人都在第 3 天和第 4 天在商店 b 什么也没买)。

最佳答案

您的问题可能已经有了答案,以防其他人(例如我)正在寻找答案。尝试:

pd.crosstab(df.store, df.day, margins=False)

这将为您提供 df,其中商店作为索引,日期作为列。你可以这样做:

df.reset_index(level=0, inplace=True) 

将索引转换为列,如果您有多个索引列,则类似:

df.columns = [''.join(col).strip() for col in df.columns.values]

得到一个“平坦的”df。

你可以这样做:

pd.crosstab([df.store, df.day.....], [df.store, df.day.....],margins=False)

关于python - Pandas 中的 Groupby,用 [] 填充缺失的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26870712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com