gpt4 book ai didi

python - Pandas 替换数据帧时间序列中的值

转载 作者:太空狗 更新时间:2023-10-30 00:49:48 26 4
gpt4 key购买 nike

我有一个以 pandas.tseries.index.DatetimeIndex 作为索引的 pandas 数据框 df。

数据是这样的:

Time                 Open  High Low   Close Volume
2007-04-01 21:02:00 1.968 2.389 1.968 2.389 18.300000
2007-04-01 21:03:00 157.140 157.140 157.140 157.140 2.400000

....

我想替换一个数据点,让 2.389 列中的第 2.389 天用 NaN 关闭:

In: df["Close"].replace(2.389, np.nan)
Out: 2007-04-01 21:02:00 2.389
2007-04-01 21:03:00 157.140

替换没有将 2.389 更改为 NaN。怎么了?

最佳答案

replace 可能不适用于 float ,因为您在 DataFrame 的 repr 中看到的浮点表示 可能与底层 float 。例如,实际收盘价可能是:

In [141]: df = pd.DataFrame({'Close': [2.389000000001]})

然而 df 的 repr 看起来像:

In [142]: df
Out[142]:
Close
0 2.389

因此,与其检查 float 是否相等,不如检查接近度通常更好:

In [150]: import numpy as np
In [151]: mask = np.isclose(df['Close'], 2.389)

In [152]: mask
Out[152]: array([ True], dtype=bool)

然后您可以使用 bool 掩码来选择和更改所需的值:

In [145]: df.loc[mask, 'Close'] = np.nan

In [146]: df
Out[146]:
Close
0 NaN

关于python - Pandas 替换数据帧时间序列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27991786/

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