gpt4 book ai didi

python - 根据另一个列值重新采样和聚合数据

转载 作者:行者123 更新时间:2023-12-04 07:22:40 26 4
gpt4 key购买 nike

我的时间序列是这样的:

TranID,Time,Price,Volume,SaleOrderVolume,BuyOrderVolume,Type,SaleOrderID,SaleOrderPrice,BuyOrderID,BuyOrderPrice
1,09:25:00,137.69,200,200,453,B,182023,137.69,241939,137.69
2,09:25:00,137.69,253,300,453,S,184857,137.69,241939,137.69
3,09:25:00,137.69,47,300,200,B,184857,137.69,241322,137.69
4,09:25:00,137.69,153,200,200,B,219208,137.69,241322,137.69
我想按体积重新采样和聚合数据帧,但结果,我应该能够得到类似的结果:
Time, Volume_B, Volume_S
09:25:00, 400, 253
Volume_B 是 时的聚合卷类型 是“B”,当它的 时,Volume_S 被聚合类型 是“S”。
我的功能如下所示,但效果不佳。
data.resample('t').agg(Volume_B=(Volume=lambda x: np.where(x['Type']=='B', x['Volume'], 0)), Volume_A=(Volume=lambda x: np.where(x['Type']=='S', x['Volume'], 0)))
如何正确实现?

最佳答案

一种方法是在之前使用 np.where 创建列 Volume_B(和 _S)像你一样,然后聚合,所以:

res = (
df.assign(Volume_B= lambda x: np.where(x['Type']=='B', x['Volume'], 0),
Volume_S= lambda x: np.where(x['Type']=='S', x['Volume'], 0))\
.groupby(df['Time']) # you can replace by resample here
[['Volume_B','Volume_S']].sum()
.reset_index()
)
print(res)
Time Volume_B Volume_S
0 09:25:00 400 253
编辑,像这样输入(并在时间列上聚合),然后你也可以做一个 pivot_table喜欢:
(df.pivot_table(index='Time', columns='Type', 
values='Volume', aggfunc=sum)
.add_prefix('Volume_')
.reset_index()
.rename_axis(columns=None)
)

关于python - 根据另一个列值重新采样和聚合数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68401257/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com