Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 合并同一列上的两个数据集_Python_Pandas - Fatal编程技术网

Python 合并同一列上的两个数据集

Python 合并同一列上的两个数据集,python,pandas,Python,Pandas,我正在尝试使用一个包含一些有用信息的数据集来创建一个新的列,其中包含这些信息,无论它们是否包含在内 df1 此处的用户是唯一的(无重复) df2 因为有一个公共列,所以我正在考虑在用户上连接这些表。我做了如下尝试: result = pd.merge(df1, df2, on=['User']) 但输出与我预期的不同,即 (预期产出) 您能告诉我上面的代码有什么问题吗?您应该做两件事:1)指定所需的最小列([[['Info',User']])和如何离开,这样您就不会在中合并另一个年列。在合并过

我正在尝试使用一个包含一些有用信息的数据集来创建一个新的列,其中包含这些信息,无论它们是否包含在内

df1

此处的用户是唯一的(无重复)

df2

因为有一个公共列,所以我正在考虑在用户上连接这些表。我做了如下尝试:

result = pd.merge(df1, df2, on=['User'])
但输出与我预期的不同,即

(预期产出)


您能告诉我上面的代码有什么问题吗?

您应该做两件事:1)指定所需的最小列(
[[['Info',User']]
)和
如何离开
,这样您就不会在中合并另一个
列。在合并过程中,数据帧被翻转:

pd.merge(df2, df1[['Info', 'User']], on=['User'], how='left')

Out[1]: 
         Date   User  Year         Note  Info
0  2012-02-13  user1  2012          NaN  24.0
1  2012-01-11  user4  2011         Paid  24.5
2  2012-02-13  user1  2012  Need review  24.0
3  2012-02-14  user3  2010          NaN  12.0
4  2012-02-13  user2  2012          NaN   0.0
5  2012-02-11  user2  2012  Need review   0.0

我认为您需要使用
右内连接

result = pd.merge(df1, df2, how='right', on=['User'])

你期望什么呢?我向你展示了我期望的。这是最后一张桌子。我添加了一个注释以突出显示预期输出,以防不清楚。谢谢实际结果是什么?几行。我没有添加任何其他过滤器。我真的不明白为什么人们会对一个有数据要使用的问题投反对票,以及我尝试过并期望得到的结果。说真的,我不能理解人。那么,下一次,结束这个问题。那会更好!非常感谢大卫。我完全错了,因为我认为内部连接是合并它们的正确方式。谢谢你的解释。没问题@LucaDiMauro。根据我的经验,
合并是最常见的合并。如果您在
merge
中切换数据帧的顺序,则
右侧
合并也会执行相同的操作,但大多数人都会执行
左侧
合并。我很少看到人们进行
合并。
Date              User      Year      Note              Info
2012-02-13        user1     2012       NA                24
2012-01-11        user4     2011       Paid              24.5
2012-02-13        user1     2012       Need review       24
2012-02-14        user3     2010       NA                12
2012-02-13        user2     2012       NA                0
2012-02-11        user2     2012       Need review       0
pd.merge(df2, df1[['Info', 'User']], on=['User'], how='left')

Out[1]: 
         Date   User  Year         Note  Info
0  2012-02-13  user1  2012          NaN  24.0
1  2012-01-11  user4  2011         Paid  24.5
2  2012-02-13  user1  2012  Need review  24.0
3  2012-02-14  user3  2010          NaN  12.0
4  2012-02-13  user2  2012          NaN   0.0
5  2012-02-11  user2  2012  Need review   0.0
result = pd.merge(df1, df2, how='right', on=['User'])