告诉我如何通过按“股票代码”分组来计算“价格”列的百分比。即 价格上涨或下跌的百分比。我想像这样:按“股票代码”对数据进行分组,取第一个和最后一个分组索引 - 找出它们之间的差异。然后,如果差异之和为正,我想添加一个条件或者负数,然后将 pct_change 应用于 pcrice 列。只是不清楚如何通过 diff 检查条件,以及如果价格下跌或上涨如何应用 pct_change
import pandas as pd
df = pd.DataFrame([['sel', 3, 'axs'],
['sel', 2, 'axs'],
['sel', 6, 'axs'],
['buy', 8, 'avax'],
['buy', 3, 'avax'],
['sel', 4, 'avax'],
['sel', 3, 'xec'],
['sel', 1000, 'xec'],
['sel', 50, 'xec']],
columns=['side', 'price', 'ticker'],
index=pd.date_range(start='1/1/2018/20', end='1/08/2018/20', periods=9)) \
.reset_index().sort_values('index')
print(df)
df = (df.groupby(['ticker'])['price'].take([0, -1]).reset_index().drop('level_1', axis=1).assign(
diff_pr=lambda x: x.groupby('ticker')['price'].diff().fillna(0)))
print(df)
如果我正确理解了这个问题,那么也许你只需要这个:
更新
获取字典形式的结果:
资源:
嗯,例如这样的事情。我们只需从最后的价格中减去第一个价格,再除以第一个价格并乘以 100。就可以得到变化的百分比:
结论: