是否可以通過 ID 將計算應用于 DF。例如,如果多個記錄共享一個相似的 ID 進行計算,但在整個 DF 中進行?
df['Total Volume'] = df.groupby('ID')[df['VOLUME'].shift(-1) df['ADDED'] - df['VOLUME']]
所以我想使用計算創建列“總交易量”
df['VOLUME'].shift(-1) df['ADDED'] - df['VOLUME']
我在這個邏輯上取得了一些成功:
df['Total Volume'] = df['VOLUME'].shift(-1) df['ADDED'] - df['VOLUME']
但它不考慮 ID 并且第一條記錄總是來自另一個 ID 的總計。
最終,對于每個新 ID 的第一條記錄,該列應該是空白或空的。
uj5u.com熱心網友回復:
IIUC,您想將計算限制為每個“ID”,對嗎?然后您可以在“VOLUME”上使用groupby 并執行其他所有操作。shift
df['TOTAL VOLUME'] = df.groupby('ID')['VOLUME'].shift(-1) df['ADDED'] - df['VOLUME']
請注意,shift(-1)將下一條記錄向上移動,因此最終結果是每個“ID”中的最后一條記錄為空。既然你說:
最終,對于每個新 ID 的第一條記錄,該列應為空白或空
我想你想要shift(1)的是(默認情況下它是 1):
df['TOTAL VOLUME'] = df.groupby('ID')['VOLUME'].shift() df['ADDED'] - df['VOLUME']
再說一次,上面的代碼可以用groupby 寫得更簡單diff:
df['TOTAL VOLUME'] = df['ADDED'] - df.groupby('ID')['VOLUME'].diff()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/443597.html
