我的数据框如下所示:
campaign_name campaign_id event_name clicks installs conversions
campaign_1 1234 registration 100 5 1
campaign_1 1234 hv_users_r 100 5 2
campaign_2 2345 registration 500 10 3
campaign_2 2345 hv_users_w 500 10 2
campaign_3 3456 registration 1000 50 10
campaign_4 3456 hv_users_r 1000 50 15
campaign_4 3456 hv_users_w 1000 50 25
我想将所有“事件名称”分类为 2 个新列,其中第一个新列代表“注册”,第二个新列代表“hv_users”,这将是事件名称为“的所有行的总和” hv_users_r”和“hv_users_w”。
为了保持简单 - “注册”列将包含仅将 event_name 作为“注册”的行。所有非“注册”event_names 将进入新列“hv_users”。
这是我期望的新数据框:
campaign_name campaign_id clicks installs registrations hv_users
campaign_1 1234 100 5 1 2
campaign_2 2345 500 10 3 2
campaign_3 3456 1000 50 10 40
有人可以指导我如何从输入 DataFrame 到输出 DataFrame 吗?
最佳答案
df['hv_users'] = df.conversions.where(df.event_name.str.match(r'hv_users_[r|w]'), 0)
df['registrations'] = df.conversions.where(df.event_name == 'registration', 0)
df.hv_users = df.groupby('campaign_id').hv_users.transform(sum)
df = df.groupby('campaign_id').head(1).drop('event_name', axis=1)
关于python - 组合 DataFrame 中的行并将值添加为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48086457/