gpt4 book ai didi

python - 将数组参数传递给我自己应用于 Pandas groupby 的 2D 函数

转载 作者:太空宇宙 更新时间:2023-11-03 15:04:14 24 4
gpt4 key购买 nike

我得到了以下 pandas 数据框

df
long lat weekday hour
dttm
2015-07-03 00:00:38 1.114318 0.709553 6 0
2015-08-04 00:19:18 0.797157 0.086720 3 0
2015-08-04 00:19:46 0.797157 0.086720 3 0
2015-08-04 13:24:02 0.786688 0.059632 3 13
2015-08-04 13:24:34 0.786688 0.059632 3 13
2015-08-04 18:46:36 0.859795 0.330385 3 18
2015-08-04 18:47:02 0.859795 0.330385 3 18
2015-08-04 19:46:41 0.755008 0.041488 3 19
2015-08-04 19:47:45 0.755008 0.041488 3 19

我还有一个接收 2 个数组作为输入的函数:

import pandas as pd
import numpy as np

def time_hist(weekday, hour):
hist_2d=np.histogram2d(weekday,hour, bins = [xrange(0,8), xrange(0,25)])
return hist_2d[0].astype(int)

我希望将我的 2D 函数应用于以下分组的每个组:

df.groupby(['long', 'lat'])

我尝试将 *args 传递给 .apply():

df.groupby(['long', 'lat']).apply(time_hist, [df.weekday, df.hour])

但我收到错误:“bin 的尺寸必须等于样本 x 的尺寸。”

当然尺寸不匹配。整个想法是,我事先不知道要向每个组发送哪些迷你 [工作日,小时] 数组。

我该怎么做?

最佳答案

做:

import pandas as pd
import numpy as np

df = pd.read_csv('file.csv', index_col=0)


def time_hist(x):
hour = x.hour
weekday = x.weekday
hist_2d = np.histogram2d(weekday, hour, bins=[xrange(0, 8), xrange(0, 25)])
return hist_2d[0].astype(int)


print(df.groupby(['long', 'lat']).apply(time_hist))

输出:

long      lat     
0.755008 0.041488 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
0.786688 0.059632 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
0.797157 0.086720 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
0.859795 0.330385 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
1.114318 0.709553 [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,...
dtype: object

关于python - 将数组参数传递给我自己应用于 Pandas groupby 的 2D 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44803363/

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