合并两个或多个不重叠的列 [英] Merging two or more columns which don't overlap

查看:124
本文介绍了合并两个或多个不重叠的列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

跟随这篇文章:
合并两列不重叠并创建新列

import pandas as pd

df1 = pd.DataFrame([["2014", "q2", 2],
                   ["2013", "q1", 1],],
                   columns=('Year', 'Quarter', 'Value'))

df2 = pd.DataFrame([["2016", "q1", 3], 
                    ["2015", "q1", 3]],
                   columns=('Year', 'Quarter', 'Value'))


print(df1.merge(df2, on='Year', how='outer'))

结果:

  Year   Quarter_x  Value_x  Quarter_y  Value_y
0  2014        q2        2       NaN     NaN
1  2013        q1        1       NaN     NaN
2  2016       NaN      NaN        q1     3
3  2015       NaN      NaN        q1     3

但是我想得到这个:

   Year    Quarter   Value 
0  2014        q2        2      
1  2013        q1        1     
2  2016        q1        3
3  2015        q1        3

注意:这不会产生所需的结果...:(

Note: This doesn't produce the desired result... :(

print(df1.merge(df2, on=['Year', 'Quarter','Value'], how='outer').dropna())

   Year Quarter  Value
0  2014      q2      2
1  2013      q1      1

...使用'left'或right'或inner也不剪切。

... using 'left' or right' or inner also don't cut it.

推荐答案

p>不知道这里发生了什么,但是如果我这样做,那么如果我执行

Not sure what's happening here, but if I do

df1.merge(df2, on=['Year', 'Quarter', 'Value'], how='outer').dropna()

   Year Quarter  Value
0  2014      q2    2.0
1  2013      q1    1.0
2  2016      q1    3.0
3  2015      q1    3.0

您可能需要查看合并,加入&连接文档

最直观的方式可能是 .append()

The most 'intuitive' way for this is probably .append():

df1.append(df2)

   Year Quarter  Value
0  2014      q2    2.0
1  2013      q1    1.0
2  2016      q1    3.0
3  2015      q1    3.0

如果您查看源代码你会发现它在幕后调用了 concat

If you look into the source code, you'll find it calls concat behind the scenes.

合并是有用的,适用于您具有重叠值的的情况。

Merge is useful and intended for cases where you have columns with overlapping values.

这篇关于合并两个或多个不重叠的列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆