gpt4 book ai didi

python - 显示不以 ".0"结尾的值 Python Pandas

转载 作者:太空宇宙 更新时间:2023-11-03 13:12:32 24 4
gpt4 key购买 nike

我有一个包含 NaN 值和浮点值的浮点列。我如何过滤掉那些不以 .0 结尾的值?

例如:

Col1
0.7
1.0
1.1
9.0
9.5
NaN

期望的结果是:

Col1
0.7
1.1
9.2

最佳答案

您可以使用 boolean indexing :

#convert to string and compare last value
print ((df.Col1.astype(str).str[-1] != '0') & (df.Col1.notnull()))
0 True
1 False
2 True
3 False
4 True
5 False
Name: Col1, dtype: bool

print (df[(df.Col1.astype(str).str[-1] != '0') & (df.Col1.notnull())])
Col1
0 0.7
2 1.1
4 9.5

将转换后的值与ìnt进行比较的另一种解决方案,但首先需要fillna :

s = df.Col1.fillna(1)
print (df[s.astype(int) != s])
Col1
0 0.7
2 1.1
4 9.5

时间:

#[30000 rows x 1 columns]
df = pd.concat([df]*10000).reset_index(drop=True)

def jez2(df):
s = df.Col1.fillna(1)
return (df[s.astype(int) != s])

In [179]: %timeit (df[(df.Col1.astype(str).str[-1] != '0') & (df.Col1.notnull())])
10 loops, best of 3: 80.2 ms per loop

In [180]: %timeit (jez2(df))
1000 loops, best of 3: 1.16 ms per loop

In [181]: %timeit (df[df.Col1 // 1 != df.Col1].dropna())
100 loops, best of 3: 3.04 ms per loop

In [182]: %timeit (df[df['Col1'].mod(1) > 0].dropna())
100 loops, best of 3: 2.58 ms per loop

关于python - 显示不以 ".0"结尾的值 Python Pandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39765264/

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