【发布时间】:2019-10-05 15:03:59
【问题描述】:
所以在这个例子中,col1 有 2 个不同的类别。如果我们说 n 个月 = 12,那么如何计算那些满足的类别,以便新列将类别 A 标记为 True,但将 cat B 标记为 false,因为它大于 n=12 个月。
d_ex = pd.DataFrame({'col1': ['A', 'A', 'B', 'B', 'A'],
'col2': ['2019-01-01', '2018-02-01',
'2015-01-01', '2019-01-01', '2019-05-01']})
d_ex['col2'] = pd.to_datetime(d_ex['col2'])
我试过了
d_ex.groupby(['col1'])['col2'].diff()
但这不起作用。该类别也可能有超过两次出现,因此如果有第三个类别 A 的日期为 2015 年,我希望将其标记为 False,但其他两个仍然正确。
我找到了这个,但我不确定如何将代码更改为不使用 idxmax Calculating the difference in dates in a Pandas GroupBy object
尝试给出的解决方案
(d_ex.groupby('col1')['col2'].diff().apply(lambda x: my_abs(x))
.apply(lambda x: set_condition(x)).bfill())
返回
0 True
1 True
2 False
3 False
4 False
但索引 4 应该是 True
【问题讨论】: