Удалить строку с условием - PullRequest
       6

Удалить строку с условием

0 голосов
/ 25 сентября 2018

У меня есть этот фрейм данных:

id                 action     user            weight                 timestamp
830093             opt_in    56610               NaN  2017-01-29T23:03:35.000Z
830095           level_up    56610               NaN  2017-01-29T23:03:36.000Z
2312674     checkout_item    56610            239.99  2017-05-15T23:19:20.000Z
2313301     checkout_item    56610            239.99  2017-05-15T23:19:20.000Z
2315639          checkout    56610            239.99  2017-05-15T23:19:20.000Z
2316158       daily_login    56610               NaN  2017-05-15T23:13:33.000Z
2402783       daily_login    56610               NaN  2017-05-23T10:51:09.000Z
2438779       daily_login    56610               NaN  2017-05-24T01:10:52.000Z
2530543       daily_login    56610               NaN  2017-05-25T22:21:10.000Z
2573416       daily_login    56610               NaN  2017-05-28T01:38:46.000Z
2679591       daily_login    56610               NaN  2017-06-05T09:33:59.000Z
2813275   checkout_reject    56610               NaN  2017-06-15T04:29:02.000Z
2981829       daily_login    56610               NaN  2017-06-26T16:40:56.000Z
3195018       daily_login    56610               NaN  2017-07-11T09:11:35.000Z
3244062       daily_login    56610               NaN  2017-07-14T17:46:04.000Z
3311904       daily_login    56610               NaN  2017-07-20T00:50:08.000Z
3313849          checkout    56610            459.20  2017-07-20T09:17:12.000Z
3313852     checkout_item    56610            459.20  2017-07-20T09:17:12.000Z
3764903       daily_login    56610               NaN  2017-08-18T10:24:23.000Z
3781360   checkout_update    56610            459.20  2017-08-19T07:10:25.000Z
3781363     checkout_item    56610            459.20  2017-08-19T07:10:25.000Z
3781366   checkout_accept    56610               NaN  2017-08-19T07:10:26.000Z
4095024       daily_login    56610               NaN  2017-09-05T07:31:44.000Z
4557587       daily_login    56610               NaN  2017-10-01T19:40:10.000Z
4652940       daily_login    56610               NaN  2017-10-06T17:36:52.000Z
5455155     checkout_item    56611               NaN  2017-11-17T00:35:29.000Z
5455155   checkout_update    56611               NaN  2017-11-17T00:35:29.000Z
5455155   checkout_accept    56611               NaN  2017-11-17T00:35:41.000Z
5455155       daily_login    56611               NaN  2017-11-18T00:31:27.000Z
5455155       daily_login    56611               NaN  2017-11-19T00:37:19.000Z
5455155     checkout_item    56611            100.00  2017-11-19T00:35:29.000Z
5455155     checkout_item    56611            100.00  2017-11-17T00:35:29.000Z
5455155          checkout    56611            100.00  2017-11-17T00:35:29.000Z
5455155       daily_login    56610               NaN  2017-11-19T00:38:25.000Z

Я хочу использовать панд только для подсчета checkout_item-s, который произошел вместе с checkout

user: 56610 num_of_checkout_item: 3

user: 56611 num_of_checkout_item: 2

У кого-нибудь есть идеи?

Ответы [ 3 ]

0 голосов
/ 25 сентября 2018

Не уверен в этом, но попробуйте, если хотите удалить конкретную строку.

df = df.drop(df[(df.user == 56610)  & (df.action =='checkout_item')].index)

df = df.drop(df[(df.user == 56611)  & (df.action =='checkout_item')].index)
0 голосов
/ 25 сентября 2018

Я предполагаю, что "count checkout_item-s only, который произошел вместе с checkout", подразумевает, что метки времени checkout_item и checkout должны быть одинаковыми для checkout_item для подсчета.

def count_items(group):
    if not "checkout" in group.action.values:
        return 0
    return (group.action == "checkout_item").sum()

>>> df.groupby(["user", "timestamp"]).apply(count_items).groupby("user").sum()
user
56610    3
56611    2
dtype: int64
0 голосов
/ 25 сентября 2018

Как насчет этого:

users = [56610, 56611]
print(len(df[(df.user.isin(users)) & (df.action == "checkout_item")]))

или на пользователя:

for user in users:
    counts = len(df[(df.user == user) & (df.action == "checkout_item")])
    print(f"user: {user} num_of_checkout_item: {counts}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...