pandas groupby和sum计算到新列和组织好的层次结构中

hivapdat  于 2023-01-24  发布在  其他
关注(0)|答案(1)|浏览(129)

我正尝试将 Dataframe groupby成树格式,以便它以分层的方式排序。DC是第一列,按顺序分为Retailer、Store Count、Product descriptions、case volume和velocity。将Retailer列加总为新列“StoreCt”,该列位于“Retailer”之后。
我遇到的问题是商店数量被复制了。
这是我的 Dataframe
| 零售商|直流|产品|铯|体积|速度|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 乔|美国广播公司|酒吧|铯|费用|速度|
| 乔|直接财务委员会|饮料1|铯|费用|速度|
| 乔|直接财务委员会|饮料2|铯|费用|速度|
| 兰迪|美国广播公司|酒吧|铯|费用|速度|
| 彼得|直接财务委员会|饮料2|铯|费用|速度|
| 约翰|XYZ|饮料|铯|费用|速度|
| 乔|XYZ|小吃|铯|费用|速度|
| 乔|直接财务委员会|条2|铯|费用|速度|
这就是我想要的结果。cs、volume和velocity列中的值需要保持不变
| 直流|零售商|储存Ct|产品|铯|体积|速度|
| - ------|- ------|- ------|- ------|- ------|- ------|- ------|
| 美国广播公司|乔|1个|酒吧|铯|费用|速度|
| | 兰迪|1个|酒吧|铯|费用|速度|
| 直接财务委员会|乔|三个|饮料1|铯|费用|速度|
| | | | 饮料2|铯|费用|速度|
| | | | 条2|铯|费用|速度|
| | 彼得|1个|饮料2|铯|费用|速度|
| XYZ|乔|1个|小吃|铯|费用|速度|
| | 约翰|1个|饮料|铯|费用|速度|
这是我的代码来获取存储计数,但是我不知道如何在不复制值的情况下将其添加到 Dataframe 中

store_count = df.groupby("Retailer").size().to_frame("StoreCt")
store_count
7rfyedvj

7rfyedvj1#

使用transform将结果广播到所有行:

df['StoreCt'] = df.groupby(['DC', 'Retailer']).transform('size')
print(df)

# Output:
  Retailer   DC  Product  Cs Volume  Velocity  StoreCt
0      joe  ABC     bars  Cs   Cost  Velocity        1
1      joe  DFC  drinks1  Cs   Cost  Velocity        3
2      joe  DFC  drinks2  Cs   Cost  Velocity        3
3    randy  ABC     bars  Cs   Cost  Velocity        1
4    peter  DFC  drinks2  Cs   Cost  Velocity        1
5     john  XYZ   drinks  Cs   Cost  Velocity        1
6      joe  XYZ   snacks  Cs   Cost  Velocity        1
7      joe  DFC    bars2  Cs   Cost  Velocity        3

要获得输出,可以对列重新排序:

cols = ['DC', 'Retailer', 'StoreCt', 'Product', 'Cs', 'Volume', 'Velocity']
df = df[cols].sort_values(['DC', 'Retailer'], ignore_index=True)
print(df)

# Output
    DC Retailer  StoreCt  Product  Cs Volume  Velocity
0  ABC      joe        1     bars  Cs   Cost  Velocity
1  ABC    randy        1     bars  Cs   Cost  Velocity
2  DFC      joe        3  drinks1  Cs   Cost  Velocity
3  DFC      joe        3  drinks2  Cs   Cost  Velocity
4  DFC      joe        3    bars2  Cs   Cost  Velocity
5  DFC    peter        1  drinks2  Cs   Cost  Velocity
6  XYZ      joe        1   snacks  Cs   Cost  Velocity
7  XYZ     john        1   drinks  Cs   Cost  Velocity

相关问题