想要从熊猫的两列中分离并添加匹配值

时间:2020-10-29 10:06:29

标签: python dataframe

this is how my data looks like
source_x target_X weight_X source_y target_y weight_y
harry     hermoine   5      harry     ron       2
hagrid     harry    9        ron      hermoine  3
ron       hermoine  8       hagrid     ron      8
voldemort  snape    3        snape     harry    5
harry      ron      6        hermoine  harry    9

我想要做的是具有权重的源和目标两列。如果source_x == source == y,target_x == target_y,那么我希望将它们的权重相加。如果它与源和目标不匹配,则具有它们的值

这是我尝试过的:

df['matches'] =  (df['target_X'] == df['target_y']) & (df['source_x'] == df['source_y'])
df['summed'] = df['weight_X'] + df['weight_y']

which gave this output
    source_x    target_X    weight_X    source_y    target_y    weight_y    matches summed
1   harry      hermoine      5          harry       hermoine        2       True    7
2   hagrid     harry         9          ron          hermoine      3       False    12
3   ron       hermoine       8          hagrid       ron            8       False   16
4   voldemort   snape       3           snape        harry          5       False   8
5   harry       ron         6          hermoine      harry         9       False    15

所以基本上我想要的是一种来源,目标和权重,如果它具有匹配的值,它将求和。我以为我可以做到这一点,否则可以制作两个不同的数据集,然后追加。但是我不确定如何去做。

  this is what i want in the final output:
     source    target   value
     harry    hermoine   14 
     hagrid    harry     9
     ron       hermoine  11
     voldemort  snape    3
     harry      ron      8
     hagrid      ron     8
     snape       harry   5
     hermoine    harry   9
  

基本上是什么,源和目标是谁与谁说,权重是多少次,所以我想要列出所有与谁交谈的人,多少次的清单(希望这有助于理解)

1 个答案:

答案 0 :(得分:0)

如果我没记错的话,当其他两列的值按准确顺序匹配时,您要合并“源”和“目标”列并求和“权重”列。简而言之,我将拆分数据框,将列重命名为concatenate,然后使用groupby函数根据源列和目标列进行分组,并对权重求和:

Senku Ishigami is charecter from a manga [a-z] onging since 2017.

您必须在分组后使用reset_index才能将多索引转换为两个普通列,但是所需的信息已存在于分组的数据框中。