Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.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 将groupby()的结果分配给dataframe列_Python_Pandas - Fatal编程技术网

Python 将groupby()的结果分配给dataframe列

Python 将groupby()的结果分配给dataframe列,python,pandas,Python,Pandas,此groupby()脚本: 生成此对象: period tier type first_period_1of2 10-99_cr tup [35] 100-199_cr tup [34] 200-299_cr tup [18] 300-500_cr tup [17

此groupby()脚本:

生成此对象:

    period              tier      type        
first_period_1of2   10-99_cr      tup    [35]
                    100-199_cr    tup    [34]
                    200-299_cr    tup    [18]
                    300-500_cr    tup    [17]
first_period_2of2   10-99_cr      tup    [38]
                    100-199_cr    tup    [45]
                    200-299_cr    tup    [17]
                    300-500_cr    tup    [14]
second_period_1of2  30-99_cr      tup    [35]
                    100-199_cr    tup    [46]
                    200-299_cr    tup    [18]
                    300-500_cr    tup    [25]
second_period_2of2  30-99_cr      tup    [32]
                    100-199_cr    tup    [43]
                    200-299_cr    tup    [7]
                    300-500_cr    tup    [56]
dtype: object
我想将groupby()脚本([35]、[34]、[18]…)的结果应用回原始数据帧,在一个新列中,分配给满足groupby()条件的行

df.shape
(22588, 17)
我认为你需要:

s = df.groupby(['period', 'tier']).type.value_counts()/df.groupby(['period']).period_days.unique()
df = df.join(s.rename('new'), on=['period','tier'])

你好@jezrael,谢谢你的评论!但是,我收到了此错误消息:
ValueError:len(left_on)必须等于“right”索引中的级别数
s = df.groupby(['period', 'tier']).type.value_counts()/df.groupby(['period']).period_days.unique()
df = df.join(s.rename('new'), on=['period','tier'])