gpt4 book ai didi

python - Pandas 非连续数字过滤器丢弃 0 行

转载 作者:行者123 更新时间:2023-12-04 03:22:55 26 4
gpt4 key购买 nike

我正在尝试过滤 Pandas 中的数据集。数字必须始终增加,尽管这可以不规则地增加。我设置了一个过滤器以确保从 DataFrame 中删除任何小于其前身的值。这是我正在使用的一个简单示例:

test = {"Test": [1, 3, 5, 7, 9, 2, 11, 4, 13]}
df = pd.DataFrame(test)
df = df[df.Test.shift() + 1 < df.Test]

这有效,除了它还删除了 0 索引。即输出:

    Test
1 3
2 5
3 7
4 9
6 11
8 13

缺少行 0 1

还有什么想法可以让这一行也进来吗?

最佳答案

尝试 fillna 具有使条件为真的值:

df = df[df.Test.shift().fillna(df.Test - 1) < df.Test]

df :

   Test
0 1
1 3
2 5
3 7
4 9
6 11
8 13

显示中间步骤的示例 DataFrame:

pd.DataFrame({
'shifted': df.Test.shift(),
'test': df.Test,
'condition': df.Test.shift() < df.Test,
'shifted then filled': df.Test.shift().fillna(df.Test - 1),
'fixed condition': df.Test.shift().fillna(df.Test - 1) < df.Test
})
 shifted  test  condition  shifted then filled  fixed condition
NaN 1 False 0.0 True
1.0 3 True 1.0 True
3.0 5 True 3.0 True
5.0 7 True 5.0 True
7.0 9 True 7.0 True
9.0 2 False 9.0 False
2.0 11 True 2.0 True
11.0 4 False 11.0 False
4.0 13 True 4.0 True

这个问题是第一种情况,NaN不小于 1 ( NaN < 1 => False )。

关于python - Pandas 非连续数字过滤器丢弃 0 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68124333/

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