[英]How to assign the average of a grouped dataframe to a column of another dataframe in python
我有一個原始的 dataframe,如下例所示
data_original = {'website': ['a', 'b'], 'unit': ['finance', 'business']}
df_original = pd.DataFrame(data_original)
它產生了 dataframe:
我還有另一個 dataframe, df 如下:
data = {'date': ['1/1/2021', '1/2/2021', '1/3/2021', '1/4/2021', '1/5/2021', '1/1/2021', '1/2/2021', '1/3/2021', '1/4/2021',
'1/5/2021'], 'website': ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b'], 'amount_views': [23, 17, 10, 25, 2, 12, 7, 5, 17, 2]}
df = pd.DataFrame(data)
這導致了以下情況:
我想在第二個 dataframe 中獲取每個網站的平均瀏覽量,並將其作為列添加到原始 dataframe 中。
我已經這樣做了:
df_new = df.groupby(['website']).mean()
df_original['average_views'] = df_new
而我得到了這個
如何獲取平均值並將其添加到原始 dataframe 中?
您可以在開始時使用groupby
,並將結果merge
回原始 dataframe:
pd.merge(df_original,
df.groupby('website')['amount_views'].mean().to_frame('average_views'),
left_on='website',right_index=True,how='left')
印刷:
website unit average_views
0 a finance 15.4
1 b business 8.6
你也可以試試:
df_new = df.groupby(['website']).mean()
df_original = df_original.set_index('website')
df_original['amount_views'] = df_new['amount_views']
print(df_original)
您的錯誤在這一行:
df_original['average_views'] = df_new
第二行與索引連接。 由於df_new
中沒有與df_original
中的索引匹配的索引,因此您得到了Nan
。
您可以像我在上面所做的那樣在兩個數據框中都有共同的索引,或者將網站與網站匹配。 我認為我的更容易。
如果作為索引的website
困擾您,請執行以下操作:
df_original = df_original.reset_index()
這將歸還您原來的 dataframe。
website unit amount_views
0 a finance 15.4
1 b business 8.6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.