【发布时间】:2017-02-24 06:39:58
【问题描述】:
这是我的例子:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A A': ['one', 'one', 'two', 'two', 'one'] ,
'B': ['Ar', 'Br', 'Cr', 'Ar','Ar'] ,
'C': ['12/15/2011', '11/11/2001', '08/30/2015', '07/3/1999','03/03/2000' ],
'D':[1,7,3,4,5]})
df['C'] = pd.to_datetime(df['C'])
def date_test(x):
key_date = pd.Timestamp(np.datetime64('2015-08-13'))
end_date = pd.Timestamp(np.datetime64('2016-10-10'))
result = False
for i in x.index:
if key_date < x[i] < end_date:
result = True
return result
def int_test(x):
result = False
for i in x.index:
if 1 < x[i] < 9:
result = True
return result
现在我按列B 分组并转换列C 和D
以下代码生成一列。
df.groupby(['B'])['D'].transform(int_test)
以下代码生成日期列
df.groupby(['B'])['C'].transform(date_test)
我希望它们都生成 1 和 0 的集合,而不是日期。我的目标是收集 1 和 0。有什么想法吗?
更新:我的主要目标是了解transform 的工作原理。
【问题讨论】:
-
解释int_test和date_test的算法意图
-
@Boud,我正在尝试从这两种方法生成掩码。对于
date_test,我有不同的目标,但一个特定的目标是确定一组日期是否连续两天位于特定的时间间隔内。这是我的大目标,但我在上面的示例中对其进行了简化。