基于两个不同大小的dataframe更新列,并更新第一个dataframe中的值。(python中vlookup的概念)
我知道这似乎是一个非常普遍和重复的问题,但我无法找到最适合我的问题的解决方案 例如,我有以下数据帧(df1): 另一个df2:基于两个不同大小的dataframe更新列,并更新第一个dataframe中的值。(python中vlookup的概念),python,pandas,dataframe,merge,Python,Pandas,Dataframe,Merge,我知道这似乎是一个非常普遍和重复的问题,但我无法找到最适合我的问题的解决方案 例如,我有以下数据帧(df1): 另一个df2: product name criteria Valvoline oil winter Valvoline oil performance Valvoline oil regular Goodyear tire regular Goodyear tire performance Bosch glass
product name criteria
Valvoline oil winter
Valvoline oil performance
Valvoline oil regular
Goodyear tire regular
Goodyear tire performance
Bosch glass regular
预期数据帧为:
receipt car parts product
101 A oil Valvoline
102 B tire Goodyear
103 B oil Valvoline
104 C glass Bosch
我确实尝试过合并,但df1中的总长度已更改
data_copy = pd.merge(df1, df2, how= "left", left_on = 'parts', right_on = 'name' )
我想从df2和join df1创建一个唯一的列表。但是还有其他优雅的方式吗
谢谢你试试这个
df['criteria'] = df1.parts.map(df2.drop_duplicates('name')
.set_index('name')['product'])
或:
试试这个
df['criteria'] = df1.parts.map(df2.drop_duplicates('name')
.set_index('name')['product'])
或:
@Andy的方法更适合填充单个列,如果使用
merge
pd.merge(df1,
df2[['name','product']].drop_duplicates().rename(columns={"name":"parts"}),
how= "left", on="parts" )
@Andy的方法更适合填充单个列,如果使用
merge
pd.merge(df1,
df2[['name','product']].drop_duplicates().rename(columns={"name":"parts"}),
how= "left", on="parts" )
receipt car parts product
0 101 A oil Valvoline
1 102 B tire Goodyear
2 103 B oil Valvoline
3 104 C glass Bosch