python - 如何按值分组但保持数据结构?
问题描述
我有一个数据集,其中包含一个销售系统的单位(商店)列表,每周都有销售和单位。我已将它们分组为一个测试组和一个控制组,作为一个新列。
我现在要做的是在数据集中使用这些新组,因为我想在所有星期内将它们相互绘制。
到目前为止,我在这方面的最佳表现是:
df_group = df.groupby('Group')['Sales'].sum()
然而,这只是总结它们,而不是每周。
Unit Year Week System_Type Sales Units_Sold
0 6111 2019 1 Component2 109578 3139
1 6111 2019 1 Component1 20792 639
2 6111 2019 2 Component2 115363 3425
3 6111 2019 2 Component1 25261 796
4 6111 2019 3 Component2 114913 3352
df['Group'] = np.where(((df['Unit'] == 6111) | (df['Unit'] == 6112) | (df['Unit'] == 6121)), 'control', 'test')
df.head()
Unit Year Week System_Type Sales Units_Sold Group
0 6111 2019 1 Component2 109578 3139 control
1 6111 2019 1 Component1 20792 639 control
2 6111 2019 2 Component2 115363 3425 control
3 6111 2019 2 Component1 25261 796 control
4 6111 2019 3 Component2 114913 3352 control
time = df.Week.unique()
df_cat = df[df.System_Type == 'Component1']
我一直在研究这个问题,但无法通过谷歌搜索找到正确的解决方案。我在想也许可以使用“时间”变量作为新索引?
非常感谢任何帮助!
解决方案
让我们玩:
import pandas as pd
df = pd.read_table('c:/4/AAA.txt', sep=',')
df.head(10)
df.groupby(['Week','Sales']).sum().sort_values('Sales')
df[(df['Sales']>30000)&(df['Year']==2019)].sort_values('Sales')
df[df['System_Type']=='Component2'].groupby('Sales').filter(lambda x: len(x)<2500).groupby('Sales').size().to_frame('size').sort_values('size')
推荐阅读
- python - 使用模拟对象测试 Python/Django 模型
- python - 带有函数 math.modf 的大十进制数
- powershell - 使用 Get-WebRequest 方法时如何通过 Powershell 查看 POST 参数?
- java - MapReduce 花费大量时间进行 JIT 编译
- javascript - 如何在 Firebase 中实现以下数据库模式?
- c# - 指数超出范围。必须是非负数且小于集合的大小。(参数‘索引’)"
- email - 如何使用 lua 编程语言发送电子邮件?
- android - 无法在 Android 备份服务中实现 onBackup()
- heroku - Heroku Cloudinary 插件与 cloudinary.com。有什么不同?
- canvas - React Konva - 隐藏锚点以调整大小