Pandas:带条件的和字符串

2024-04-27 02:22:21 发布

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

我有数据帧

member_id   event_path  event_duration
111 vk.com  2
111 vk.com  3
111 facebook.com    1
111 facebook.com    4
111 facebook.com    20

如果event_path[i] == event_path[i-1]和{},我需要对字符串进行concat。 我使用

^{pr2}$

但它回来了

ValueError: cannot reindex from a duplicate axis

期望输出

111 vk.com  5
111 facebook.com    5
111 facebook.com    20

Tags: 数据path字符串comeventidfacebookvk
1条回答
网友
1楼 · 发布于 2024-04-27 02:22:21

我不太清楚你的问题,但我假设对于每个成员和路径组合,你想求和所有小于5的值?如果是这样,我们可以将5以上和5以下的值分开,然后将低于5的值相加,然后合并得到的两个帧:

import pandas as pd

df = pd.DataFrame({'member_id': [111, 111, 111, 111, 111],
                   'event_path': ['vk.com', 'vk.com', 'facebook.com', 'facebook.com', 'facebook.com'],
                   'event_duration': [2, 3, 1, 4, 20]
                   })

sums = df[df['event_duration'] < 5].groupby(['event_path', 'member_id'], as_index=False).sum()
large = df[df['event_duration'] >= 5]

final = pd.concat([sums, large])

print final

打印输出:

^{pr2}$

相关问题 更多 >