【发布时间】:2022-07-15 22:14:55
【问题描述】:
我有一个包含货币交易的 DataFrame:
import pandas as pd
data = [[1653663281618, -583.8686, 'USD'],
[1653741652125, -84.0381, 'USD'],
[1653776860252, -33.8723, 'USD'],
[1653845294504, -465.4614, 'USD'],
[1653847155140, 22.285, 'USD'],
[1653993629537, -358.04640000000006, 'USD']]
df = pd.DataFrame(data = data, columns = ['time', 'qty', 'currency_1'])
我需要添加新列“余额”,它将计算所有先前交易的“数量”列的总和。我有一个简单的功能:
def balance(row):
table = df[df['time'] < row['time']]
return table['qty'].sum()
df['balance'] = df.apply(balance, axis = 1)
但我真正的 DataFrame 非常大,并且 .apply 方法的运行速度非常慢。 在这种情况下是否可以避免使用 apply 函数? 像 np.where 之类的东西?
【问题讨论】: