,我有以下格式的熊貓數據幀一組選定行的執行數學最有效的方法:什麼是在一個數據幀
Location| X | Y
----------------
A1 | 1 | 2
A1 | 2 | 3
A2 | 1 | 1
A2 | 2 | 3
etc...many locations...many values
我想在一個所有值的一階導數位置,並將其作爲X1附加到原始數據框。
Location| X | Y | X'
--------------------
A1 | 1 | 2 |
A1 | 2 | 3 |
A2 | 1 | 1 |
A2 | 2 | 3 |
etc...many locations...many values
什麼是最有效/最優雅的做法。我有一個看起來像這樣的方法:
1.)獲取所有獨特的位置。
2.)遍歷所有位置以獲得只匹配循環中位置的行。
grad_dict = {}
for location in locations:
selected_rows = df.query('{0} == "{1}")
temp_df = np.gradient(selected_rows['X'])
grad_dict[location] = temp_df
3)串連所有字典在一起有點像這樣:
result = pd.concat([grad_dict[location] for location in locations])
注:有可能與此代碼的一些小問題,我好像沒有真正加入這個值數據框當前。但更廣泛的一點是我的問題。
我的問題:這是最優雅/有效的方式嗎?有沒有更優雅/更快的方式?當有許多地點時,此操作有時可能需要幾秒鐘的時間。
那麼快的聖牛!答案几乎是瞬間的!我的意思是說,對於問題的回答速度以及代碼執行的速度有多快!只是一個後續問題:我在向漸變函數中添加參數時遇到困難。例如,如果我想將步驟更改爲0.5而不是1(默認值),或者如果我想設置edge_order = 1 ...我該怎麼做? – Thornhale
只是回答我自己的問題:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.groupby.GroupBy.transform.html – Thornhale
編輯,以解決您的意見(它看起來像你的想法已經出來),所以未來的讀者有一個自足的答案。 – root