gpt4 book ai didi

python - 如何根据列的值获取另一个dataframe的值并设置到相应的字段

转载 作者:太空宇宙 更新时间:2023-11-04 09:52:37 25 4
gpt4 key购买 nike

这是我的两个数据框,

df1 = pd.DataFrame([['@1','A',2],['@2','A',1],['@3','A',4],['@4','B',1],['@5','B',1],['@6','B',3],['@7','B',3],['@8','C',4]],columns=['key1','key2','value'])

key1 key2 value
0 @1 A 2
1 @2 A 1
2 @3 A 4
3 @4 B 1
4 @5 B 1
5 @6 B 3
6 @7 B 3
7 @8 C 4

df2 = pd.DataFrame([['@5','B',None],['@7','B',None],['@6','B',None],['@3','A',None],['@6','B',None]],columns=['key1','key2','value'])

key1 key2 value
0 @5 B None
1 @7 B None
2 @6 B None
3 @3 A None
4 @6 B None

我知道我可以使用 isin 来选择 df1 中 key1+key2 在 df2 中的行

df1[(df1['key1']+df1['key2']).isin(df2['key1']+df2['key2'])]

key1 key2 value
2 @3 A 4
4 @5 B 1
5 @6 B 3
6 @7 B 3

但是我怎样才能将 df1 的 ['value'] 分配给 df2 ,这样 df2 就是

  key1 key2 value
0 @5 B 1
1 @7 B 3
2 @6 B 3
3 @3 A 4
4 @6 B 3

最佳答案

使用pd.DataFrame.merge

df2[['key1', 'key2']].merge(df1, 'left')

key1 key2 value
0 @5 B 1
1 @7 B 3
2 @6 B 3
3 @3 A 4
4 @6 B 3

或者用pd.DataFrame.join

keys = ['key1', 'key2']
df2[keys].join(df1.set_index(keys).value, on=keys)

key1 key2 value
0 @5 B 1
1 @7 B 3
2 @6 B 3
3 @3 A 4
4 @6 B 3

假设您要更新 df2 而保持其他列不变。您可以就地更新

keys = ['key1', 'key2']
df2.update(df2[keys].join(df1.set_index(keys).value, on=keys).value)

或者创建一个副本

keys = ['key1', 'key2']
df2.assign(value=df2[keys].join(df1.set_index(keys).value, on=keys).value)

关于python - 如何根据列的值获取另一个dataframe的值并设置到相应的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47148852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com