【问题标题】:Best way to matchup & merge 2 seperate dataframes in python by column/row values?按列/行值匹配和合并python中2个单独数据框的最佳方法?
【发布时间】:2021-12-24 06:02:02
【问题描述】:

我的 python 脚本输出了 2 个数据帧:dt1 & dt2

每个数据框有 4 列(colAcolBcolCcolD)并且每个数据框都有不同的长度(dt1 总是有更多的行)

我想创建第三个数据框dt3

  1. 复制dt1
  2. dt2[colD]值添加到相应的行中如果3列不匹配我想加载null

我尝试使用 for 循环和组合 if else 语句进行迭代,但似乎无法正确检查,请帮助!

【问题讨论】:

  • 欢迎来到 Stack Overflow!寻求帮助时,请始终创建minimal reproducible example。这意味着在代码块中提供数据帧示例和预期输出以及您的代码尝试,以便我们可以轻松地重现问题。仅用文字描述您的数据和您遇到的问题往往会导致误解。一个好方法是将print(df.to_dict()) 的输出与print(df) 共享,其中df 是您的DataFrame。这使我们能够清楚地了解您想要什么并为您提供帮助。

标签: python pandas dataframe merge compare


【解决方案1】:

使用来自pandasmerge

df1.merge(df2[["colA","colB","colC","colD"]],on=["colA","colB","colC"])

更新为操作请求。

df1.colD.fillna('---')

【讨论】:

  • 这是一个好的开始!但它只加载相等的行/元素。如何用 dt1 的其余部分和 dt2 的 null 填充新表的其余部分?
  • df1.merge(df2[["colA","colB","colC","colD"]],on=["colA","colB","colC"],如何='左')
  • 谢谢,这很好用!有没有办法用“---”替换“NaN”?非常感谢
  • 检查更新的答案
  • 谢谢!需要设置就地=真。如果我想在合并中添加第三个数据框,我是否只是在另一个逗号之后模仿我们为 df2 所做的?
猜你喜欢
  • 1970-01-01
  • 2021-04-07
  • 1970-01-01
  • 2021-09-06
  • 2021-07-22
  • 2019-11-13
  • 2018-10-16
  • 2021-07-04
  • 2020-08-12
相关资源
最近更新 更多