给出以下数据框:
import pandas as pd
df1 = pd.DataFrame({'Last':['Smith','Jones','Johnson'], 'First': ['Tom', 'Jim', 'Neil'], 'DOB':['1/1/2010', '3/1/2012', '4/3/2011'], 'ID': [1,2,3]})
df1
DOB First ID Last
0 1/1/2010 Tom 1 Smith
1 3/1/2012 Jim 2 Jones
2 4/3/2011 Neil 3 Johnson
df2 = pd.DataFrame({'Last':['S','J','Johnson'], 'First': ['T', 'J', 'Neil'], 'DOB':['1/1/2010', '3/1/2012', '4/3/2011'],'ID': [1,2,5]})
df2
DOB First ID Last
0 1/1/2010 T 1 S
1 3/1/2012 J 2 J
2 4/3/2011 Neil5 Johnson
我想在pandas中加入(合并)它们,如下所示:
尝试合并ID = ID
如果不存在比赛(即Neil Johnson),
一个。合并最后,首先,DOB =最后,第一,DOB
答案 0 :(得分:2)
df3 = pd.merge(df1,df2,on='ID')
df4 = pd.merge(df1.drop(df3.index), df2.drop(df3.index), on = ['DOB','First','Last'])
我会告诉你,你必须决定如何匹配你的专栏。
答案 1 :(得分:1)
关于合并:
merge方法接受以下参数:
所以如果你想要交集:
merged = pd.merge(df1, df2, on "ID", how="inner")
相当于:
df1['Last']=df1['Last'].str[:1]
df2['Last']=df2['Last'].str[:1]
关于你的观点" a"我会删除" Last"的第一个字母。列然后将其与其他两个连接起来。
df1["key"] = df1["Last"]+df1["First"]+df1["DOB"]
df2["key"] = df2["Last"]+df2["First"]+df2["DOB"]
和
merged = pd.merge(df1, df2, on "key", how="inner")
print(merged)
然后我会使用合并方法:
{{1}}