如何连接两个数据帧中的列和和和值?

2024-09-30 01:19:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧(左数据帧是1,另一个是2),我想根据以下条件得到最终的数据帧:

  1. Col2Col1分组,例如A 566,788,888,999,1212

  2. 在数据帧2中,我可以发现(Group A) 788,888,999,1212所以我想保留它,而566不在数据帧2中,所以忽略它。

  3. 数据帧1和2中所有成员的总和,例如A-788(2), A-888(3), A-999(4), A-1212 (5), 788-888(12), 999-1212 (13),所以2+3+4+5+12+13 = 39


Col1    Col2  Total        Col3   Col4   Total  
 A      566    1            788   888      12
 A      788    2            999   1212     13
 A      888    3            700   707      14
 A      999    4            701   702      15
 A      1212   5
 B      700    6
 B      701    7
 B      702    8
 B      703    9
 B      704    10
 B      705    11

预期结果

ResultCol1    ResultCol2           ResultTotal
  A           788,888,999,1212        39
  B           700,701,702             50

Tags: 数据group成员条件col2col3col1total
1条回答
网友
1楼 · 发布于 2024-09-30 01:19:04

假设df1df2是您的初始数据帧:

In [345]: common_values = pd.concat([df2.Col3, df2.Col4])

In [346]: def f(x):
     ...:     return pd.Series({'Col2': ','.join(map(str, x.Col2)),
     ...:                       'Total': x.Total.sum() 
     ...:                       + df2[(df2.Col3.isin(x.Col2) | df2.Col4.isin(x.Col2))]['Total'].sum()})
     ...:         

In [347]: df_totals = df1[df1.Col2.isin(common_values)].groupby('Col1').apply(f)

In [348]: df_totals
Out[348]: 
                  Col2  Total
Col1                         
A     788,888,999,1212     39
B          700,701,702     50

相关问题 更多 >

    热门问题