Python Pandas-使用transform对组执行的操作
以下是我的例子:Python Pandas-使用transform对组执行的操作,python,pandas,transform,Python,Pandas,Transform,以下是我的例子: 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','0
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
下面的代码生成日期列
df.groupby(['B'])['C'].transform(date_test)
我希望它们都能产生一和零的集合,而不是日期。我的目标是得到1和0的集合。有什么想法吗
更新:我的主要目标是了解
转换
的工作原理 为了与后续操作的类型一致性,您可以使用转换
调用的结果,该函数尝试将生成的序列转换为它所针对的选定数据的数据类型。函数源代码已显式完成此数据类型转换
可以将布尔数据转换为日期,从而获得日期时间序列。显式强制转换为int
,以获得所需的类型:
df.groupby(['B'])['C'].transform(date_test).astype('int64')
解释int_测试的算法意图和日期_test@Boud,我尝试从这两种方法生成掩码。通过
date\u测试
我有不同的目标,但如果一组日期在特定的时间间隔内有两个连续的日子,则需要找到一个特定的目标。这是我的大目标,但我在上面的示例中对其进行了简化。我尝试了它,但返回了TypeError:无法将datetimelike从[datetime64[ns]]键入[int32]
嘿,快速提问,如果transform
未能转换为原始数据类型,那么会发生什么?函数将
df.groupby(['B'])['C'].transform(date_test).astype('int64')