gpt4 book ai didi

python Pandas : Drop ongoing values from column

转载 作者:行者123 更新时间:2023-12-04 07:43:38 25 4
gpt4 key购买 nike

以下问题:
我有一个包含股票指数总返回的大时间序列数据框。当股票退出指数时,该值将被设置为常量,直到数据框中的最后一个日期。 我想将值设置为 NaN 一旦它们保持不变(一旦退出索引)。 我怎样才能做到这一点?
drop the yellow marked values (all but the first)

最佳答案

你可以拿diff并将值替换为 np.nan哪里diff等于 0 和 where (请注意,它有点相反,“如果不等于 0,则从 df 取值,否则 np.nan ):

df.where(df.diff().ne(0), np.nan)
例如:
df = pd.DataFrame({
'x': [1, 2, 3, 3, 3, 3, 4, 5],
'y': [1, 1, 1, 2, 3, 3, 3, 4],
})

df.where(df.diff().ne(0), np.nan)
输出:
     x    y
0 1.0 1.0
1 2.0 NaN
2 3.0 NaN
3 NaN 2.0
4 NaN 3.0
5 NaN NaN
6 4.0 NaN
7 5.0 4.0
更新 为了只删除直到序列结束时相同的值,我们可以找到要替换的区间 np.nan s 与 diffcumsum :
df = pd.DataFrame({
'x': [1, 2, 3, 3, 3, 3, 3, 3],
'y': [1, 1, 1, 2, 3, 3, 3, 4],
})

df.where(
df.diff().ne(0)[::-1].cumsum().ne(0)[::-1],
np.nan)
输出:

x y
0 1.0 1
1 2.0 1
2 3.0 1
3 NaN 2
4 NaN 3
5 NaN 3
6 NaN 3
7 NaN 4

关于 python Pandas : Drop ongoing values from column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67314307/

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