Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas-使用transform对组执行的操作_Python_Pandas_Transform - Fatal编程技术网

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')