【问题标题】:Pandas: Merge pairs of rows within the same dataframe, while keeping both rows熊猫:合并同一数据框中的行对,同时保留两行
【发布时间】:2022-12-08 06:23:03
【问题描述】:

我有一个执行交易表,其中每笔交易记录两次,从交易的每一方报告,因此每笔交易由表中的两行表示:

Counterparty A Counterparty B Amount payed Amount received Traders (alphabetical)
John Mark 90 65 John, Mark
Mark John 65 90 John, Mark
Philip Isaac 100 20 Isaac, Philip
Isaac Philip 20 100 Isaac, Philip

对于每一行,我想从交易的另一侧添加单元格,以便生成的表格看起来像这样:

Counterparty A_x Counterparty B_x Amount payed_x Amount received_x Counterparty A_y Counterparty B_y Amount payed_y Amount received_y
John Mark 90 65 Mark John 65 90
Mark John 65 90 John Mark 90 65
Philip Isaac 100 20 Isaac Philip 20 100
Isaac Philip 20 100 Philip Isaac 100 20

这看起来应该是非常简单的事情,但我不知何故无法让它发挥作用。我已经尝试了很多 groupbys 以及拆分和合并。例如,创建一个 df 保留第一次出现共享“Traders”值的行,一个 df 保留第二次出现共享“Traders”的行。然后我尝试将它们合并到完整数据框中的“相反”行。但是没有设法到达任何地方。

有人能帮忙吗?

【问题讨论】:

  • 我肯定错过了什么。您似乎只是在复制列和更改列标签,这非常简单。我不明白什么?

标签: python pandas dataframe


【解决方案1】:

只需使用您想要的标准定义两个新列。看起来你想要这样的东西

df['Counterparty A_y'] = df['Counterparty B']
df['Counterparty B_y'] = df['Counterparty A']
df['Amount payed_y'] = df['Amount received']
df['Amount recieved_y'] = df['Amount payed']

这将保留您的旧列并添加新列。然后您可以使用 df.rename 重命名您的原始列,以便它们具有 x's,就像您在您想要的结果中所拥有的那样。

【讨论】:

    猜你喜欢
    • 2018-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 2018-07-22
    • 1970-01-01
    相关资源
    最近更新 更多