gpt4 book ai didi

python - 如何有效地将函数应用于 Pandas Panel 的每个 DataFrame

转载 作者:太空宇宙 更新时间:2023-11-03 11:28:47 32 4
gpt4 key购买 nike

我正在尝试将函数应用于 Pandas 面板中的每个 DataFrame。我可以把它写成一个循环,但索引似乎需要很长时间。我希望内置的 Pandas 函数可能更快。

我的数据框看起来像(实际上每列大约 50 行):

mydata = pd.DataFrame( { 'hits' : [ 123, 456,678 ], 'sqerr' : [ 253, 641, 3480] } )

它们排列在一个带有多索引键的面板中:

mydict = { (0, 20 ) : mydata, (30, 40 ) : moredata }
mypanel = pd.Panel( mydict )

面板看起来像这样:

<class 'pandas.core.panel.Panel'>
Dimensions: 1600 (items) x 48 (major_axis) x 2 (minor_axis)
Items axis: (-4000, -4000) to (3800, 3800)
Major_axis axis: 0 to 47
Minor_axis axis: hits to sqerr

我有一个函数,它接受一个 DataFrame 并输出一个数字:

def condenser( df ):
return some_stuff( df['hits'], df['sqerr'] )

我想将我的面板缩减为一个系列,由我的多索引索引,并将我的冷凝器函数的结果作为其值。

我能做到:

intermediate = []
for k, df in mypanel.iteritems():
intermediate.append( condenser( df ) )

result = pd.Series( results, index = pypanel.items )

它给出了所需的结果,但是当我分析它时,只有 4% 的时间花在了我的 condenser 函数上。大部分时间花在 iteritems__getitem__ 上,所以我想知道是否可以做得更好。

我查看了 mypanel.apply( condenser, axis = 'items' ) 但这分别循环遍历了我的数据帧的每一列。有什么东西可以对每个 DataFrame 应用一个函数吗?

附言我正在使用 Python 2.7.9 和 pandas 0.15.2

最佳答案

apply是正确的,但是用法是:

mypanel.apply(condenser, axis=[1,2])

这会将 48 x 2 DataFrame 传递到冷凝器中。

关于python - 如何有效地将函数应用于 Pandas Panel 的每个 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27765882/

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