![](/img/trans.png)
[英]how to extract pandas dataframe from another dataframe based on multiple column?
[英]Pandas : Updating multiple column in a dataframe based on values from another dataframe
我有兩個不同尺寸的數據框。 僅當df1
和df2
列值[UserId,Month]匹配時,才需要從df2
更新df1中的msg_count
我的數據如下:
df1:
UserID Month A B C D E F msg_count
knaas 1/1/2017 0 0 0 0 0 0 0
knaas 2/1/2017 0 0 0 0 0 0 0
knaas 3/1/2017 0 0 0 0 0 0 0
knaas 4/1/2017 0 0 0 2 0 0 0
knaas 5/1/2017 0 0 0 0 0 0 0
knaas 6/1/2017 0 0 0 0 0 0 0
knaas 7/1/2017 0 0 0 0 0 0 0
knaas 8/1/2017 0 0 0 0 0 0 0
knaas 9/1/2017 0 0 0 0 0 0 0
knaas 10/1/2017 0 0 0 0 0 0 0
knaas 11/1/2017 0 0 0 0 0 0 0
knaas 12/1/2017 0 0 0 0 0 0 0
ArtCort0324 1/1/2017 0 0 0 0 0 0 0
ArtCort0324 2/1/2017 0 2 0 2 0 0 0
ArtCort0324 3/1/2017 0 0 0 0 0 0 0
ArtCort0324 4/1/2017 0 1 1 0 0 0 0
ArtCort0324 5/1/2017 0 0 0 3 0 0 0
ArtCort0324 6/1/2017 0 0 0 0 0 0 9
df2:
UserID Month msg_count
ArtCort0324 1/1/2017 0
ArtCort0324 2/1/2017 0
ArtCort0324 3/1/2017 0
ArtCort0324 4/1/2017 0
ArtCort0324 5/1/2017 0
ArtCort0324 6/1/2017 9
ArtCort0324 7/1/2017 0
ArtCort0324 8/1/2017 0
ArtCort0324 9/1/2017 0
ArtCort0324 10/1/2017 0
ArtCort0324 11/1/2017 0
ArtCort0324 12/1/2017 0
我已經嘗試了以下代碼片段。 但是它沒有按預期工作
res = df2.set_index(['UserID', 'Month'])\
.combine_first(df1.set_index(['UserID', 'Month']))\
.reset_index()
updated_new = df1.merge(gitter, how='left', on=['UserID', 'Month'],
suffixes=('', '_new'))
updated_new['msg_count'] =
np.where(pd.notnull(updated_new['msg_count_new']),
updated_new['msg_count_new'], updated_new['msg_count'])
我需要以下輸出
UserID Month A B C D E F msg_count
knaas 1/1/2017 0 0 0 0 0 0 0
knaas 2/1/2017 0 0 0 0 0 0 0
knaas 3/1/2017 0 0 0 0 0 0 0
knaas 4/1/2017 0 0 0 2 0 0 0
knaas 5/1/2017 0 0 0 0 0 0 0
knaas 6/1/2017 0 0 0 0 0 0 0
knaas 7/1/2017 0 0 0 0 0 0 0
knaas 8/1/2017 0 0 0 0 0 0 0
knaas 9/1/2017 0 0 0 0 0 0 0
knaas 10/1/2017 0 0 0 0 0 0 0
knaas 11/1/2017 0 0 0 0 0 0 0
knaas 12/1/2017 0 0 0 0 0 0 0
ArtCort0324 1/1/2017 0 0 0 0 0 0 0
ArtCort0324 2/1/2017 1 0 0 0 0 0 0
ArtCort0324 3/1/2017 0 0 0 0 0 0 50
ArtCort0324 4/1/2017 0 0 0 0 0 0 0
我添加了一個默認列msg_count
到df1
用默認值0。我需要更新msg_count
從df1
與價值msg_count
從df2
,只有當UserId
和Month
在兩種dataframes等於
聽起來您想要merge
:
df_merge = pd.merge(left=df1, right=df2, on=['UserID', 'Month'], how='left']
您可能需要將方式設置為'inner', 'outer'
等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.