【问题标题】:How to use merge in pandas [duplicate]如何在熊猫中使用合并[重复]
【发布时间】:2016-09-02 07:11:07
【问题描述】:

对不起各位,我知道这是一个非常基本的问题,我只是一个初学者

In [55]: df1
Out[55]:
   x  y
a  1  3
b  2  4
c  3  5
d  4  6
e  5  7

In [56]: df2
Out[56]:
   y  z
b  1  9
c  3  8
d  5  7
e  7  6
f  9  5

pd.merge(df1, df2) 给出:

In [56]: df2
Out[56]:
   x  y  z 
0  1  3  8
1  3  5  7
2  5  7  6

我对merge的使用感到困惑,'0','1','2'是什么意思?比如索引为0时,为什么x为1,y为3,z为8?

【问题讨论】:

  • 是你的question吗?至少您的示例 DF 完全相同...

标签: python pandas


【解决方案1】:

由于pd.merge 的默认设置,您会得到它:

merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=False, suffixes=('_x',
'_y'), copy=True, indicator=False)

on : label or list
    Field names to join on. Must be found in both DataFrames. If on is
    None and not merging on indexes, then it merges on the intersection of
    the columns by default.

您没有将任何键传递给on 键,因此默认情况下它会在列的交点处合并。 df1df2 有不同的索引,所以如果你想保持左或右,你应该指定:

In [43]: pd.merge(df1, df2)
Out[43]:
   x  y  z
0  1  3  8
1  3  5  7
2  5  7  6

In [44]: pd.merge(df1, df2, on='y', left_index=True)
Out[44]:
   x  y  z
c  1  3  8
d  3  5  7
e  5  7  6

In [45]: pd.merge(df1, df2, on='y', right_index=True)
Out[45]:
   x  y  z
a  1  3  8
c  3  5  7
e  5  7  6

【讨论】:

    【解决方案2】:

    pd.merge 的作用是连接两个数据帧,类似于在关系数据库中使用“JOIN”语句合并两个关系的方式。

    当您使用代码合并 df1 和 df2 时:pd.merge(df1, df2),您没有指定 pd.merge 函数的任何其他参数的值,因此它采用以下默认值 'inner'对于合并函数的“如何”参数,并对 df1 和 df2 进行交集操作。 df1 和 df2 共有的列名是“y”。因此,它在 df1 和 df2 中搜索“y”列的共同值,并创建一个新的数据框,其中包含“x”、“y”、“z”列,其中“y”列具有共同值 3、5、7 , 'x' 将具有对应于 df1 中的 3,5,7 的值,类似地,'z' 将具有对应于 df2 中的 3,5,7 的值。新数据帧的索引已设置为 0,1,2(默认情况下),因为您没有在 pd.merge 函数调用中使用 left_index、right_index(默认情况下为 False)指定索引模式。

    【讨论】:

      猜你喜欢
      • 2018-12-20
      • 1970-01-01
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      • 2019-12-07
      相关资源
      最近更新 更多