在两列中成对查找最大值

2024-09-20 22:20:17 发布

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

我想找到两对列中的最大值

我有以下专栏:

user_id', 'fullname', 'email', 'handle', 'audience_ethnicities_code0', 'audience_ethnicities_weight0', 'audience_ethnicities_code1', 'audience_ethnicities_weight1', 'audience_ethnicities_code2', 'audience_ethnicities_weight2', 'audience_ethnicities_code3', 'audience_ethnicities_weight3'

如果代码和重量相关,例如:

==>;用户id=ABCD

'audience_ethnicities_code0' = asian; 'audience_ethnicities_weight0' = 0.4

'audience_ethnicities_code1' = african; 'audience_ethnicities_weight1' = 0.2

'audience_ethnicities_code2' = white; 'audience_ethnicities_weight2' = 0.2

'audience_ethnicities_code3' = hispanic; 'audience_ethnicities_weight3' = 0.2

tot权重=1,用户ABCD的受众为40%的亚洲人,20%的非洲人等,因此对于用户ABCS,亚洲人以40%的比例成为最受欢迎的受众

==>;用户id=XMYN

'audience_ethnicities_code0' = asian; 'audience_ethnicities_weight0' = 0.1

'audience_ethnicities_code1' = hispanic; 'audience_ethnicities_weight1' = 0.7

'audience_ethnicities_code2' = white; 'audience_ethnicities_weight2' = 0.1

'audience_ethnicities_code3' = african; 'audience_ethnicities_weight3' = 0.1

因此,对于用户XMYN来说,最受欢迎的受众是拉美裔,占70%

注意'audience_ethnicities_code0'可以是白人、非洲人、西班牙人、亚洲人。对'audience_ethnicities_code1', 'audience_ethnicities_code2', 'audience_ethnicities_code3'也是这样

我想要的是在列和行中包含种族(audience_ethnicities_code_n),它们对每个用户的权重(audience_ethnicities_weight_n

有什么想法吗


Tags: 用户gtidaudienceabcd受众code2code1
1条回答
网友
1楼 · 发布于 2024-09-20 22:20:17

当我理解正确后,您可以使用上述示例数据执行以下操作:

list_dicts = []
for user in df["user_id"].unique():
    list_dicts.append(dict(zip(df[df["user_id"]==user].filter(like="code").values.flatten(), df[df["user_id"]==user].filter(like="weight").values.flatten())))

之后,只需使用pd.DataFrame(list_dicts)从该列表创建一个数据帧,添加用户列df_new["user"] = df["user_id"].unique(),就可以得到

    asian   african white   hispanic  user
0   0.4     0.2     0.2     0.2       ABCD
1   0.1     0.1     0.1     0.7       XMYN

相关问题 更多 >

    热门问题