-1

给定具有以下数据的数据框,如何使用 python 和 pandas 提取给定事件“Y”的最后 3 次出现?

         Date Customer Event
0    1/1/2013      Tom     N
1    1/3/2013      Tom     Y
2    1/5/2013    Harry     Y
3    1/7/2013     Dick     N
4    1/9/2013      Tom     Y
5   1/11/2013      Tom     Y
6   1/13/2013    Harry     N
7   1/15/2013     Dick     Y
8   1/17/2013      Tom     Y
9   1/19/2013      Tom     N
10  1/21/2013    Harry     Y
11  1/23/2013     Dick     Y
12  1/25/2013      Tom     N
14  1/29/2013    Harry     Y
15  1/31/2013     Dick     N
16   2/2/2013      Tom     Y
17   2/4/2013      Tom     Y
18   2/6/2013    Harry     N
19   2/8/2013     Dick     Y
20  2/10/2013      Tom     Y
21  2/12/2013      Tom     N

预期结果应该是

        Start           End
Tom     2/2/2013    2/10/2013
Harry   1/5/2013    1/29/2013
Dick    1/15/2013   2/8/2013
4

2 回答 2

3

如果 DataFrame 名为 df,您可以尝试:

    df[df['Event'] == 'Y'][-3:]
于 2013-03-01T06:24:54.853 回答
0

阿努潘,谢谢你的提示。无论客户如何,您的建议都会返回 Event == 'Y' 的最后 3 个事件

df[df['Event'] == 'Y'][-3:]
Out[133]: 
    Date         Customer Event
17  2/4/2013     Tom      Y
19  2/8/2013     Dick     Y
20  2/10/2013    Tom      Y

我需要每个客户最后 3 个“Y”事件的日期范围。我确信有一种更有效的方法,但以下方法有效。

df.ix[df.Customer == 'Tom'].ix[df.ix[df.Customer == 'Tom'].Event == 'Y'][-3:]
Out[134]: 
     Date          Customer Event
16   2/2/2013      Tom      Y
17   2/4/2013      Tom      Y
20  2/10/2013      Tom      Y


df.ix[df.Customer == 'Dick'].ix[df.ix[df.Customer == 'Dick'].Event == 'Y'][-3:]
Out[135]: 
     Date         Customer Event
7    1/15/2013    Dick     Y
11   1/23/2013    Dick     Y
19   2/8/2013     Dick     Y

等等等等

谢谢

于 2013-03-01T13:51:24.683 回答