我有两个我想加入的数据框,但是我对如何这样做感到困惑,或者这是否需要加入。 我的第一个数据框有一个“死亡城市”列,它是一个不唯一的城市的字符串名称(即它可以在数据集中多次出现)。我有另一个数据集,只有两列,“城市”和“邮政编码”,其中包含城市列表及其相应的邮政编码。我想在第一个数据框后附加一列,这是“死亡之城”的相应邮政编码。实现这一目标的最佳方法是什么?我试着做了
pd.merge(df1, df2, left_on='Death City', right_on='City', how='outer')
但它正在返回一个更大的数据框架。我只想要附加邮政编码的df1的值。谢谢!
答案 0 :(得分:2)
您似乎需要在merge
中加入左键:
pd.merge(df1, df2, left_on='Death City', right_on='City', how='left')
最好的是在pandas documentation中解释。
答案 1 :(得分:1)
如果您只想添加一列,我会使用Series.map(),否则请使用pd.merge():
df1['Zip Code'] = df1['Death City'].map(df2.set_index('City')['Zip Code'])
答案 2 :(得分:0)
import pandas as pd
d = {'Death City' : pd.Series(['city1', 'city1', 'city2','city3']),
'column2' : pd.Series([1., 2., 3., 4.])}
df1 = pd.DataFrame(d)
d = {'city' : pd.Series(['city1', 'city2','city3','city4']),
'zipcode' : pd.Series([11111,2222, 3333., 44444])}
df2 = pd.DataFrame(d)
所以在这个例子中:df1有3个独特的死亡城市,4行和第2列。 df2有4个城市和4个zipcodes。
df1a=df1.drop_duplicates(['Death City'])
如果你想获得独特的“死亡城市”,那么首先从df1中删除重复的邮政编码组合,以便你有3个独特的行
df_merged=pd.merge(df1a,df2,left_on='Death City',right_on='city')
然后在df1.'Death City'= df2.city上将df2连接到df1然后删除冗余的城市列。
df_merged=df_merged[['Death City','zipcode']]