Pandas 数据框按 10 分钟间隔分组,对其他列执行不同的操作
Pandas dataframe group by 10 min intervals with different actions on other columns
我有一个 pandas 数据框,其中包括时间戳和其他 71 列,如下所示:
timestamp |close_price|highest_price|volume| ...
2018-09-29 00:00:20 |1809 |1811 | ... |
2018-09-29 00:00:34 |1823 |1832 |
2018-09-29 00:00:59 |1832 |1863 |
2018-09-29 00:01:09 |1800 |1802 |
2018-09-29 00:01:28 |1832 |1845 |
.
.
.
我想将数据放入 10 分钟的间隔中,并且我想对每一列进行单独的操作,例如我希望 close_price
列的 10 分钟间隔显示 last
值真正的 table 中相应范围的值,或者对于 highest_price
列,我想要相应范围的 max
值,或者对于 volume
我想要 mean
该范围内的值。我已经试过了
dataTable = datefram.resample("10min").agg({'first_price':'first',
'close_price':'last',
'highest_price': 'max',
'volume':'mean',
#other attributes...
})
但结果似乎不正确。
还有其他方法可以做我想做的事吗?
我将不胜感激任何评论或想法。
请注意,时间戳值没有特定的模式。在 1 分钟内,我们可以有 0 到 60 行。
如果您的数据跨越多天或多个时期,而您没有任何数据点,则调用 resample()
可能会产生大量具有 NaN
值的额外行。我认为您的代码实际上是正确的,您只是看到所有额外的行而产生了错误的印象。
你的做法是正确的。这
dataframe.resample("10min").agg()
为您计算。
您可能会得到比预期更多的输出,这是因为:resample
方法不断地增加 10 分钟的时间并进行您要求的计算。但是,如果在任何 10 min
间隔中都没有数据,它会创建一个 NULL
行。也许您的数据不连续并导致此 Null
行。
您可以使用 dataframe.dropna()
简单地删除 NULL
行
我有一个 pandas 数据框,其中包括时间戳和其他 71 列,如下所示:
timestamp |close_price|highest_price|volume| ...
2018-09-29 00:00:20 |1809 |1811 | ... |
2018-09-29 00:00:34 |1823 |1832 |
2018-09-29 00:00:59 |1832 |1863 |
2018-09-29 00:01:09 |1800 |1802 |
2018-09-29 00:01:28 |1832 |1845 |
.
.
.
我想将数据放入 10 分钟的间隔中,并且我想对每一列进行单独的操作,例如我希望 close_price
列的 10 分钟间隔显示 last
值真正的 table 中相应范围的值,或者对于 highest_price
列,我想要相应范围的 max
值,或者对于 volume
我想要 mean
该范围内的值。我已经试过了
dataTable = datefram.resample("10min").agg({'first_price':'first',
'close_price':'last',
'highest_price': 'max',
'volume':'mean',
#other attributes...
})
但结果似乎不正确。 还有其他方法可以做我想做的事吗? 我将不胜感激任何评论或想法。
请注意,时间戳值没有特定的模式。在 1 分钟内,我们可以有 0 到 60 行。
如果您的数据跨越多天或多个时期,而您没有任何数据点,则调用 resample()
可能会产生大量具有 NaN
值的额外行。我认为您的代码实际上是正确的,您只是看到所有额外的行而产生了错误的印象。
你的做法是正确的。这
dataframe.resample("10min").agg()
为您计算。
您可能会得到比预期更多的输出,这是因为:resample
方法不断地增加 10 分钟的时间并进行您要求的计算。但是,如果在任何 10 min
间隔中都没有数据,它会创建一个 NULL
行。也许您的数据不连续并导致此 Null
行。
您可以使用 dataframe.dropna()
NULL
行