熊猫使用文本列重新采样

时间:2020-07-20 10:16:43

标签: python pandas

感谢您抽出宝贵的时间阅读本文! 我有一个关于熊猫的问题。我有一个看起来像这样的数据集:

                       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'
        })

但是那没有用。 有人可以帮我吗? 谢谢!

1 个答案:

答案 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