Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pandas将多个groupby结果放入同一个表中_Python_Pandas_Dataframe_Pandas Groupby - Fatal编程技术网

Python pandas将多个groupby结果放入同一个表中

Python pandas将多个groupby结果放入同一个表中,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,我有以下df ccode year_month user tcode 10 201903 WF MI 10 201903 WF MI 10 201903 QQ MI 10 201903 QQ MI 20 201904 BATCH MI 20 201904 WF MI 2

我有以下
df

ccode    year_month    user    tcode
10       201903        WF      MI
10       201903        WF      MI
10       201903        QQ      MI
10       201903        QQ      MI 
20       201904        BATCH   MI
20       201904        WF      MI
20       201904        BATCH   MI
我喜欢做以下几件事

inv_tran_user_ccode_ym_gr_df = df.groupby(
        ['tcode', 'user', 'ccode', 'year_month']).size().reset_index(name='count')

    inv_tran_user_ccode_ym_gr_df['bus_unit_pct'] = inv_tran_user_ccode_ym_gr_df['count'].div(
        inv_tran_user_ccode_ym_gr_df.groupby(['ccode', 'year_month'])['count'].transform('sum')).mul(
        100).round(2)

    inv_tran_user_ym_gr_df = df.groupby(
        ['tcode', 'user', 'year_month']).size().reset_index(name='count')

    inv_tran_user_ym_gr_df['org_pct'] = inv_tran_user_ym_gr_df['count'].div(
        inv_tran_user_ym_gr_df.groupby(['year_month'])['count'].transform('sum')).mul(
        100).round(2)
我想知道是否可以将
org\u pct
bus\u unit\u pct
放在同一张表中

ccode    year_month    user    tcode    org_pct    bus_unit_pct
10       201903        WF      MI       50%        50%
10       201903        QQ      MI       50%        50%
20       201904        WF      MI       33%        33%
20       201904        BATCH   MI       67%        67%

你已经完成了所有的艰苦工作。这是一个相对简单的
合并

(库存交易用户账户账户账户存款准备金率下降('count',axis=1)
.merge(inv_trans_user_ym_gr_df.drop('count',axis=1),
on=['year\u month','user','tcode']))
导致

  tcode   user  ccode  year_month  bus_unit_pct  org_pct
0    MI  BATCH     20      201904         66.67    66.67
1    MI     QQ     10      201903         50.00    50.00
2    MI     WF     10      201903         50.00    50.00
3    MI     WF     20      201904         33.33    33.33

你已经完成了所有的艰苦工作。这是一个相对简单的
合并

(库存交易用户账户账户账户存款准备金率下降('count',axis=1)
.merge(inv_trans_user_ym_gr_df.drop('count',axis=1),
on=['year\u month','user','tcode']))
导致

  tcode   user  ccode  year_month  bus_unit_pct  org_pct
0    MI  BATCH     20      201904         66.67    66.67
1    MI     QQ     10      201903         50.00    50.00
2    MI     WF     10      201903         50.00    50.00
3    MI     WF     20      201904         33.33    33.33

您可以简单地将这两个数据集合并在一起

result = pd.merge(inv_tran_user_ccode_ym_gr_df, inv_tran_user_ym_gr_df, on=['tcode','user','year_month'])

您可以简单地将这两个数据集合并在一起

result = pd.merge(inv_tran_user_ccode_ym_gr_df, inv_tran_user_ym_gr_df, on=['tcode','user','year_month'])

从原始df开始,您还可以尝试使用
groupby
,然后使用
normalize=True
使用
value\u counts
: 每份文件:

如果为True,则返回的对象将包含唯一值的相对频率



从原始df开始,您还可以尝试使用
groupby
,然后使用
normalize=True
使用
value\u counts
: 每份文件:

如果为True,则返回的对象将包含唯一值的相对频率