我想根据条件合并/合并2个数据框。
让我们说这是两个dfs。
df1
name tpye option store
a 2 8 0
b 4 9 8
c 3 6 2
g 3 2 7
k 1 6 2
m 3 6 5
df2
name red green yellow
a r g y
b r g y
m r g y
如果df2 [' name']值存在于df1 [' name']中,我想尝试做什么,将红色,绿色列添加到final_df。
所以final_df想要
name tpye option store red green yellow
a 2 8 0 r g y
b 4 9 8 r g y
c 3 6 2
g 3 2 7
k 1 6 2
m 3 6 5 r g y
答案 0 :(得分:2)
试试这个。它起作用是因为pandas
可以通过索引有效地分配,特别是当索引在每个数据帧中是唯一的时。
df1 = df1.set_index('name')
df2 = df2.set_index('name')
df1[['red', 'green', 'yellow']] = df2[['red', 'green', 'yellow']]
或者,pd.merge
将起作用,正如@PaulH所提到的那样:
df1.merge(df2, how='left', on='name')
答案 1 :(得分:0)
您可以使用pandas join功能。您的第一个数据帧将是您想要所有值的数据帧。例如:
import pandas as pd
d1 = pd.DataFrame({'col1': [1, 2 , 4], 'col2': [3, 4 , 5]})
d2 = pd.DataFrame({'col1': [1, 10], 'col3': [3, 4]})
joined = d1.set_index('col1').join(d2.set_index('col1'))
这完全符合您的要求:
>>joined
col2 col3
col1
1 3 3.0
2 4 NaN
4 5 NaN