4
我想要的功能應用到熊貓面板中的每一個數據幀的數據幀的每個。我可以把它寫成一個循環,但索引似乎需要很長時間。我希望內建的熊貓功能可能會更快。如何有效地應用功能的大熊貓面板
我有看起來像(在現實中每列約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')
但這種單獨遍歷我DataFrames的每一列。有沒有什麼東西會對每個DataFrame應用一個函數?
P.s.我使用Python 2.7.9和熊貓0.15.2
我必須明確地轉換'condenser'浮動的返回值,但隨後完美。 – 2015-01-12 13:32:54