熊猫:与条件
问题描述:
和字符串我有数据帧熊猫:与条件
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]
和event_duration < 5
,我需要Concat的字符串。 我用
df = df.groupby(['member_id', 'event_path'],
sort=False,
as_index=False)['event_duration'].sum().where(df['event_duration'] < 5)
但它返回
ValueError: cannot reindex from a duplicate axis
欲望输出
111 vk.com 5
111 facebook.com 5
111 facebook.com 20
答
我不是从你的问题完全清楚,但我认为每个成员和路径组合,你想总和小于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
打印出:
event_duration event_path member_id
0 5 facebook.com 111
1 5 vk.com 111
4 20 facebook.com 111
+0
我试图在大文件上测试它,并且丢失了一些数据。 event_duration中的值小于sum –
+0
@PetrPetrov嗯,它不应该是。你能提供一个发生这种情况的例子吗? – asongtoruin
时你声明'event_duration asongtoruin
@asongtoruin当字符串中的值小于5时 –