2 回答

TA贡献1757条经验 获得超8个赞
您可以使用pd.DataFrame.apply部分矢量化解决方案:
def summer(x):
m1 = df_a['ColA'].eq(x['ColA'])
m2 = df_a['ColB'].isin(x['ColB'].split(','))
return df_a.loc[m1 & m2, 'Sales'].sum()
df_b['TotalSales'] = df_b.apply(summer, axis=1)
print(df_b)
ColA ColB TotalSales
0 1 A,B 30
1 2 E 2000

TA贡献1827条经验 获得超4个赞
您可以尝试选择位于数据框 B ColB 列中的数据框 A 行并添加所选的销售列
#df
ColA ColB Sales
1 A 10
1 B 20
1 C 100
2 D 1000
2 E 2000
df.set_index('ColB',inplace=True)
#df
# ColA Sales
# ColB
# A 1 10
# B 1 20
# C 1 100
# D 2 1000
# E 2 2000
#df1
#ColA ColB
# 1 A,B
# 2 E
df1['TotalSales'] = df1.ColB.str.split(',').apply(lambda x: df.loc[x]['Sales'].sum() )
出去:
ColA ColB TotalSales
0 1 A,B 30
1 2 E 2000
添加回答
举报