如何按值分组但保持数据结构?

时间:2019-04-01 14:11:18

标签: python python-3.x pandas pandas-groupby

我有一个数据集,其中包含每周销售一个带有销售和单位的系统的单位(商店)列表。我将它们分组为一个测试和对照组,作为新列。

我现在想要做的是在数据集中使用这些新组,因为我想在所有星期中将它们相互绘制。

到目前为止,我最好的镜头是:   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']

我已经看了一段时间了,无法用谷歌找到正确的解决方案。我在想也许将“时间”变量用作新索引?

任何帮助,不胜感激!

1 个答案:

答案 0 :(得分:0)

让我们玩吧:

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')