簡體   English   中英

在相似的列上合並兩個數據框

[英]Merging two dataframes on similar columns

我有以下兩個數據框,它們是大型數據集的片段:

df1: 
date key    number 
2000  1      50
2001  1      40
2000  2      600
2001  2      650

df2:
key   key2
1       A
2       B 
3       C

我想將key2列添加到與“ key”匹配的df1列中。 結果應如下所示:

date key    number    key2
2000  1      50        A
2001  1      40        A
2000  2      600       B
2001  2      650       B

為此,我使用以下命令:

result = pd.merge(df1, df2, how="left", on="key")

但是,這也將key2“ C”添加到數據集,我不想添加它。 我只希望基於df1的鍵將變量key2附加到df1。 df2中與df1中的鍵不匹配的信息應被刪除。 因此,我的結果數據框應比df1多包含一列,並且行數應准確。

有人知道為什么合並“ left”在這里不起作用,因為如果我這樣運行代碼,我的結果數據幀將有1列(按需要),但比df1還要多,這是我不想要的。

您可以使用pd.Series.replace

In [242]: df1['key2'] = df1.key.replace(dict(df2.values)); df1
Out[242]: 
   date  key  number key2
0  2000    1      50    A
1  2001    1      40    A
2  2000    2     600    B
3  2001    2     650    B

您也可以使用df.merge為合並指定left_onright_on列:

In [251]: df1.merge(df2, left_on='key', right_on='key')
Out[251]: 
   date  key  number key2
0  2000    1      50    A
1  2001    1      40    A
2  2000    2     600    B
3  2001    2     650    B

實際上,您可以省略關鍵字參數, pd.merge(df1, df2)也適用(例如您的示例)。

感謝您的答復。 我實際上是通過以下方式完成的:

result= df1.join(df2, how="left", on="key", lsuffix='_', rsuffix='_')

我不知道為什么這不會產生與合並相同的結果...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM