簡體   English   中英

如果索引值相同,如何將一個DataFrame列復制到另一個Dataframe中

[英]How to copy one DataFrame column in to another Dataframe if their indexes values are the same

創建具有名稱為“ keys”的列中具有某些重復單元格值的DataFrame之后:

import pandas as pd
df = pd.DataFrame({'keys': [1,2,2,3,3,3,3],'values':[1,2,3,4,5,6,7]})

在此處輸入圖片說明

我繼續創建另外兩個DataFrame,它們是原始DataFrame df的合並版本。 這些新創建的DataFrames在“鍵”列下將沒有重復的單元格值:

df_sum = df_a.groupby('keys', axis=0).sum().reset_index()
df_mean = df_b.groupby('keys', axis=0).mean().reset_index()

如您所見, df_sum['values']單元格的值全部加在一起。 df_mean['values']單元格值是使用mean()方法df_mean['values']平均的。 最后,我將兩個數據框中的“值”列重命名為:

df_sum.columns = ['keys', 'sums']
df_mean.columns = ['keys', 'means']

在此處輸入圖片說明

現在,我想將df_mean['means']列復制到數據幀df_sum

如何實現呢?

下面的Photoshoped圖像說明了我要創建的數據框。 'sum'和'means'列都合並到一個DataFrame中:

在此處輸入圖片說明

有幾種方法可以做到這一點。 在數據框外使用merge功能是最有效的。

df_both = df_sum.merge(df_mean, how='left', on='keys')

df_both

Out[1]:
   keys  sums  means
0     1     1    1.0
1     2     5    2.5
2     3    22    5.5

我認為pandas.merge()是您要尋找的功能。 就像pd.merge(df_sum, df_mean, on = "keys") 此外,此結果還可以總結為一個agg函數,如下所示:

df.groupby('keys')['values'].agg(['sum', 'mean']).reset_index()
#  keys sum mean
#0    1   1  1.0
#1    2   5  2.5
#2    3  22  5.5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM