【发布时间】:2017-04-06 13:27:42
【问题描述】:
这是我的数据框:
import pandas as pd
df = pd.DataFrame({'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],
'F': ['12/1/2011','10/1/2000','8/15/2015','12/1/2011','12/1/2011'] })
df['C'] = pd.to_datetime(df['C'])
df['F'] = pd.to_datetime(df['F'])
我想按列B 分组,然后为每个组检查列C 是否包含列F 30 天内的日期。我会取回整个组的指标列,看起来应该像
df['indicator'] = [1,0,1,1,1]
这是我尝试过的:
def date_test(x, y):
result = False
for i in x.index:
if x[i]<y[i]+ pd.Timedelta(days=30):
result = True
return result
df['indicator'] = df.groupby('B')['C','F'].transform(date_test).astype('int64')
但是我回来了TypeError: Transform function invalid for data types
所以我想我不能将两列传递给转换函数。有什么想法吗?
【问题讨论】:
标签: python pandas group-by transform