[英]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.