为了记录,我已经阅读了以下线索,但似乎没有一个能满足我的需求:
说我有以下表2
:
sam
我想排除没有创建任何内容的用户,即在is_manually为True和False的两行中created_per_week为0,在这种情况下为用户50.
B
我了解到01-05-30
没有3
方法,应该使用jon
代替。
我得到的最接近的答案是A
,但它也将用户33的行手动排除为True,这是不合需要的。我也尝试了01-01-19
,但它返回了一个KeyError。
换句话说,我正在搜索R中select name,
sum(case when uniques.choice = A then 1 else 0 end) votesA,
sum(case when uniques.choice = B then 1 else 0 end) votesB
FROM (
SELECT id, name, choice, max(date)
FROM votes
GROUP BY name
) uniques;
的等价感谢。
答案 0 :(得分:1)
transform
+ any
df[df.assign(New=df.created_per_week==0).groupby('user_id').created_per_week.transform('any')]
Out[425]:
user_id is_manually created_per_week
0 10 True 59
1 10 False 90
2 33 True 0
3 33 False 64
或者只是使用loc
+ isin
df.loc[df.user_id.isin(df[df.created_per_week!=0].user_id)]
Out[426]:
user_id is_manually created_per_week
0 10 True 59
1 10 False 90
2 33 True 0
3 33 False 64
来自PiR
f, u = pd.factorize(df.user_id); df[np.bincount(f, df.created_per_week)[f] > 0]
答案 1 :(得分:0)
您可以应用groupby
然后filter
命令来获取输出。
df.groupby('user_id').filter(lambda x: (x['created_per_week'] != 0).any())
user_id is_manually created_per_week
0 10 True 59
1 10 False 90
2 33 True 0
3 33 False 64