python - 组合 DataFrame 中的行并将值添加为列

标签 python pandas dataframe pandas-groupby

我的数据框如下所示:

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/

相关文章:

python - 被 pandas dtype 转换为 np.float16 值 2053 变成 2052 感到困惑

python - 用 Pandas 分组数据的堆积条形图

python - 从 pandas DataFrame 中删除包含空单元格的行

r - 如何计算R环境中存在的所有数据帧的行数

R:在 R 中将数据框(混合因子和数字)转换为 XTS

javascript - flask url_for Javascript 中的 URL

python - 计算矩形面和边缘屏幕之间的距离

python - 为什么 Python 的 socket.getfqdn() 返回一个看起来像 IPv6 主机的长字符串而不是 `hostname -f` 返回的内容?

python - 如何将我的数据插入现有的 excel 文件

python-3.x - 如何按列分组并获取另一列的最大值并使用python返回整行