感谢您抽出宝贵的时间阅读本文! 我有一个关于熊猫的问题。我有一个看起来像这样的数据集:
close high low open volume symbol
date
2020-07-20 11:40:00 2.110 2.280 2.110 2.270 170620.0 A7L.L
2020-07-20 11:40:00 3.740 3.740 3.740 3.740 130.0 ALCJ.PA
2020-07-20 11:40:00 29.350 29.800 29.300 29.700 1060.0 ALCRB.PA
2020-07-20 11:41:00 29.800 29.800 29.800 29.800 117.0 ALCRB.PA
2020-07-20 11:40:00 3.340 3.345 3.330 3.330 10377.0 ALGAU.PA
这些是每分钟收集一次的股票报价。我想将这些报价重新采样为每日蜡烛,因此将其重新采样为“ 1D”。如果我遍历每个符号,我都可以做到:
df=df.resample('1D').agg({
'high' : 'max',
'low': 'min',
'open' : 'first',
'close': 'last',
'volume' : 'sum'
})
但是由于多种原因,我想在1个重采样中执行此操作,而不是2000个单个采样。如何在1天的时间范围内以符号级别进行重新采样?
我尝试过:
df=df.groupby('ric').resample('1D').agg({
'high' : 'max',
'low': 'min',
'open' : 'first',
'close': 'last',
'volume' : 'sum'
})
但是那没有用。 有人可以帮我吗? 谢谢!
答案 0 :(得分:0)
对我来说,您的解决方案有效,也许是升级熊猫所必需的:
df1=(df.groupby('symbol').resample('1D').agg({
'high' : 'max',
'low': 'min',
'open' : 'first',
'close': 'last',
'volume' : 'sum'
}))
print (df1)
high low open close volume
symbol date
A7L.L 2020-07-20 2.280 2.11 2.27 2.11 170620.0
ALCJ.PA 2020-07-20 3.740 3.74 3.74 3.74 130.0
ALCRB.PA 2020-07-20 29.800 29.30 29.70 29.80 1177.0
ALGAU.PA 2020-07-20 3.345 3.33 3.33 3.34 10377.0
替代Grouper
:
df2=(df.groupby(['symbol', pd.Grouper(freq='1D')]).agg({
'high' : 'max',
'low': 'min',
'open' : 'first',
'close': 'last',
'volume' : 'sum'
}))
print (df2)
high low open close volume
symbol date
A7L.L 2020-07-20 2.280 2.11 2.27 2.11 170620.0
ALCJ.PA 2020-07-20 3.740 3.74 3.74 3.74 130.0
ALCRB.PA 2020-07-20 29.800 29.30 29.70 29.80 1177.0
ALGAU.PA 2020-07-20 3.345 3.33 3.33 3.34 10377.0