繁体   English   中英

Pandas 水平合并两个数据框

[英]Pandas merge two dataframes horizontally

我正在处理这样的问题:

mydata_old
|  x  |  y   |
|-----|------|
| 1   | 10   |
| 2   | 15   |
| 3   | 12   |
| 4   | 21   |

mydata_new
|  x  |  y   |
|-----|------|
| 4   | 20   |
| 5   | 25   |
| 6   | 30   |

我想合并两个表以获得:

mydata
|  x  |  y   |
|-----|------|
| 1   | 10   |
| 2   | 15   |
| 3   | 12   |
| 4   | 20   | # x = 4 does not show up twice
| 5   | 25   |
| 6   | 30   |

我尝试使用pandas.merge ,但无法获得所需的结果。

mydata = pd.merge(mydata_new, mydata_old, how="left")

一种方法是使用外部连接(即,保留来自两个数据帧的索引)。 您可以使用pd.merge(mydata_new, mydata_old, how='outer')实现此目的,然后保持最新数据可用。

但是,使用pandas.concat可能会更直接。

在这里,我连接了两个数据帧。 请注意,如果x出现在mydata_new中,我会从mydata_old中排除行。 通过这种方式,您可以在两个数据帧(旧的和新的)中都可用时保留最新数据。

# Concat frames and if data is available in both, keep data from mydata_new
mydata = pd.concat(
    [
        mydata_old.loc[~mydata_old['x'].isin(mydata_new['x'])],
        mydata_new
    ],
    axis=0)

这将打印以下内容:

X
1个 10
2个 15
3个 12
4个 20
5个 25
6个 30

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM