【问题标题】:How to Merge data frames only if a row of the first one is equal to the other one?仅当第一个行与另一行相等时如何合并数据帧?
【发布时间】:2020-11-10 08:42:42
【问题描述】:

我只是尝试输入 base_consolidada df 数据,前提是“Número da conta”列中 data_final 的行值等于第一个 df 的同一列名中的行。但是,它是太长了,我不知道如何解决它....

for _,row in base_consolidada.iterrows():
for _,row2 in data_final.iterrows():
    if row["Número da conta"]==row2["Número da conta"]:
        row[["Investimento(DF)","Saldo Líquido(DF)","%Rend(DF)"]]=row2[["Investimento","Saldo Líquido","% Rend"]]

【问题讨论】:

  • 你的两个数据框有多大?您在这里进行了 len(df1) * len(df2) 比较,因为您正在将 base_consalidada 中的每一行与 data_final 中的每一行进行比较。假设 numero de conta 表示帐号,并且每一行都有一个唯一的帐号,您最好在每个数据框中创建一组帐号,然后将这两个集合相交,然后查找帐号仅在该交叉口中的数字并对该 programiz.com/python-programming/methods/set/intersection 执行操作
  • 如果你有一个示例数据集可以使用,它会更容易帮助一些示例代码

标签: python python-3.x pandas dataframe merge


【解决方案1】:

没有示例,您的问题非常模糊。我想您正在寻找连接而不是合并。试试这个代码:

df_1 = base_consolidada.["Investimento(DF)","Saldo Líquido(DF)","%Rend(DF)"]
df_2 = data_final["Investimento(DF)","Saldo Líquido(DF)","%Rend(DF)"]

if base_consolidada["Número da conta"].equals(data_final["Número da conta"]):
    pd.concat([df_1, df_2])

【讨论】:

  • 好吧首先谢谢,我会尝试在 base_consolidada df 中阐明我想要的内容,我有 4 列名为“Número da conta”、“Investimento(DF)”、“Saldo Líquido( DF)","%Rend(DF)"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多