gpt4 book ai didi

python - Pandas - 使用变换对组进行操作

转载 作者:行者123 更新时间:2023-11-28 17:24:04 25 4
gpt4 key购买 nike

这是我的例子:

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 列分组并转换 CD

以下代码生成一列。

df.groupby(['B'])['D'].transform(int_test)

下面的代码生成日期列

df.groupby(['B'])['C'].transform(date_test)

我希望它们都能生成 1 和 0 的集合,而不是日期。我的目标是收集 1 和 0。有什么想法吗?

更新:我的主要目标是了解transform 的工作原理。

最佳答案

为了与后续操作保持类型一致性,您可以对 transform 调用的结果进行处理,该函数会尝试将生成的 Series 转换为它所针对的选定数据的数据类型。函数源代码已明确完成此 dtype 转换。

您的 bool 数据可以转换为日期,从而获得日期时间系列。显式转换为 int 以获得预期类型:

df.groupby(['B'])['C'].transform(date_test).astype('int64')

关于python - Pandas - 使用变换对组进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40049802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com