【问题标题】:Why merging 2 data frames gives me oen with triple the rows为什么合并 2 个数据框给我一个三行的数据框
【发布时间】:2022-11-20 07:31:03
【问题描述】:

我有df1

       x            y no.
0  -17.7    -0.785430  y1
1  -15.0 -3820.085000  y4
2  -12.5     2.138833  y3
..  ....     ........  ..
40  15.6     5.486901  y2
41  19.2     1.980686  y3
42  19.6     9.364718  y2

df2

       delta y     x
0     0.053884 -17.7
1     0.085000 -15.0
2     0.143237 -12.5
..    ........  ....
40    0.113099  15.6
41    0.102245  19.2
42    0.235282  19.6

它们都有 43 行,x 列在两者上完全相同。

不知何故,当我在x 上合并它们时,我得到一个有 123 行的 df:

 x            y no.   delta y
0   -17.7    -0.785430  y1  0.053884
1   -15.0 -3820.085000  y4  0.085000
2   -12.5     2.138833  y3  0.143237
3   -12.4     1.721205  y3  0.251180
4   -12.1     2.227343  y2  0.127343
..    ...          ...  ..       ...
118  12.1     1.642526  y3  0.143886
119  14.4  2576.435000  y4  0.171000
120  15.6     5.486901  y2  0.113099
121  19.2     1.980686  y3  0.102245
122  19.6     9.364718  y2  0.235282

我的输入:final = df1.merge(df2, on="x")

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    尝试以下操作:df1.join(df2)

    join 是按列左连接 pd.merge 是按列的内连接 pd.concat 是按行外连接

    pd.concat: 采用 Iterable 参数。因此,它不能直接获取数据帧(使用 [df,df2]) DataFrame 的尺寸应沿轴匹配

    加入并 pd.merge: 可以接受 DataFrame 参数

    参考:Merge two dataframes by index

    【讨论】:

      猜你喜欢
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多