【发布时间】:2020-02-10 12:35:43
【问题描述】:
我有一个非常大的数据框。
我想根据其他列 'userid' 和 'date' 创建一个新列 'result'。
用户 ID 有两条或多条记录。
import pandas as pd
import numpy as np
userid = ['1','1','22','48','48','48','393','393','555','555']
date = ['11/01/2016','11/02/2016','11/05/2016','11/08/2016','12/02/2016','02/12/2017','02/22/2017','02/28/2017','12/15/2016','02/28/2017']
df1 = pd.DataFrame({"userid": userid, "date": date})
userid date
1 11/01/2016
1 11/02/2016
22 11/05/2016
48 11/08/2016
48 12/02/2016
48 02/12/2017
393 02/22/2017
393 02/28/2017
555 12/15/2016
555 02/28/2017
这个新列“结果”中有两种类型的值。
'1':如果 userid 出现在 02/01/2017 之前,并且在 02/01/2017 或之后(两个条件都应满足),则返回值为 '1'。
'0':如果不满足上述条件,则应将此行赋值为'0'。
示例 1:用户 ID 48 在 2017 年 2 月 1 日之前出现两次,在 2017 年 2 月 1 日之后出现一次。因此,userid 48 的结果列中的值应为“1”,因为这两个条件都满足。
示例 2:用户 ID 393 在我们的数据中出现了两次,但在两条记录中它的日期都在 02/01/2017 之后。因此,userid 393 的结果列中的值应为 '0'。
在这种情况下,我的输出数据框将是:
userid date result
1 11/01/2016 0
1 11/02/2016 0
22 11/05/2016 0
48 11/08/2016 1
48 12/02/2016 1
48 02/12/2017 1
393 02/22/2017 0
393 02/28/2017 0
555 12/15/2016 1
555 02/28/2017 1
我不知道实现这一目标的最佳方法。
任何人都可以帮忙吗?提前致谢!
【问题讨论】:
标签: python python-3.x pandas dataframe