拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 在Pandas中满足条件时复制和合并列值

在Pandas中满足条件时复制和合并列值

白鹭 - 2022-01-23 2188 0 0

我对熊猫有点陌生,正在努力寻找解决我的问题的方法。

我的资料框看起来像这样:

ID 数量 一个 C
1 3.5 0 0 1
1 10 0 1 0
1 30 1 0 0
2 3.6 0 0 1
2 11 0 1 0
2 20 1 0 0

当“Id”列中的值相同时,我想将“num”列中的值复制到 A、B 或 C 列中将“1”作为值的列,然后将它们合并为一行并完全洗掉“num”列。

有点像这样:

ID 数量 一个 C
1 3.5 0 0 3.5
1 10 0 10 0
1 30 30 0 0
2 3.6 0 0 3.6
2 11 0 11 0
2 20 20 0 0

最后:

ID 一个 C
1 30 10 3.5
2 20 11 3.6

uj5u.com热心网友回复:

第一步,这是一个简单的乘法,使用mul

cols = ['A', 'B', 'C']
df[cols] = df[cols].mul(df['num'], axis=0)

第二步,使用groupby max

df.groupby('Id', as_index=False)[cols].max()

没有中间的所有步骤:

cols = ['A', 'B', 'C']
(df[cols].mul(df['num'], axis=0)
         .groupby(df['Id']).max()
         .reset_index()
)

输出 1:

   Id   num     A     B    C
0   1   3.5   0.0   0.0  3.5
1   1  10.0   0.0  10.0  0.0
2   1  30.0  30.0   0.0  0.0
3   2   3.6   0.0   0.0  3.6
4   2  11.0   0.0  11.0  0.0
5   2  20.0  20.0   0.0  0.0

输出 2:

   Id     A     B    C
0   1  30.0  10.0  3.5
1   2  20.0  11.0  3.6
标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *