【问题标题】:Pandas merge two datasets with same number of rowsPandas 合并两个具有相同行数的数据集
【发布时间】:2019-03-31 00:45:42
【问题描述】:

我有两个具有相同行数的表(第二个表是通过处理 T1 内的文本从第一个表计算出来的)。我将它们都存储为熊猫数据框。 T2 与 T1 没有共同的列。这是示例,因为我的表很大:

T1:
| name  | street  | city   |
|-------|---------|--------|
| David | street1 | Prague |
| John  | street2 | Berlin |
| Joe   | street3 | London |

T2:
| computed1 | computed2 |
|-----------|-----------|
| 0.5       | 0.3       |
| 0.2       | 0.8       |
| 0.1       | 0.6       |

Merged:
| name  | street  | city   | computed1 | computed2 |
|-------|---------|--------|-----------|-----------|
| David | street1 | Prague | 0.5       | 0.3       |
| John  | street2 | Berlin | 0.2       | 0.8       |
| Joe   | street3 | London | 0.1       | 0.6       |

我尝试了这些命令:

pd.concat([T1,T2])
pd.merge([T1,T2])
result=T1.join(T1)

使用 concat 和 merge 我只会得到前一千个组合,其余的都是 nan(我仔细检查了两者的大小相同),使用 .join 它不会将它们组合起来,因为没有任何共同点。

有什么办法可以在 pandas 中组合这两个表吗?

谢谢

【问题讨论】:

  • 也许这个 SO 问题可以帮助你? :link
  • DataFrames 的大小相同吗?也许需要pd.concat([T1,T2], axis=1)我猜
  • 或者如果两个DataFrame的索引不同但长度相同,则需要pd.concat([T1.reset_index(drop=True),T2.reset_index(drop=True)], axis=1)
  • 谢谢你们,@jezrael 重置索引的解决方案似乎有效!谢谢大家!

标签: python pandas


【解决方案1】:

对于默认索引,您需要在 concat 之前使用 reset_index()

df = pd.concat([T1.reset_index(drop=True),T2.reset_index(drop=Tru‌​e)], axis=1)

【讨论】:

    【解决方案2】:

    我想补充一点,pd.concat 只需将轴提供为列即可完成您想要的操作。像这样:

    pd.concat([T1,T2],axis=1)
    

    【讨论】:

      【解决方案3】:

      另一种方法是合并索引值:

      df = T1.reset_index().merge(T2.reset_index(), left_index=True, right_index=True, how='left)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-04
        • 2015-03-21
        • 1970-01-01
        • 1970-01-01
        • 2017-06-24
        • 2019-01-21
        • 2021-12-18
        相关资源
        最近更新 更多