gpt4 book ai didi

python - 从 python pandas 数据框中删除一些元素

转载 作者:太空宇宙 更新时间:2023-11-03 21:16:28 26 4
gpt4 key购买 nike

我有一个 20000 行 5 列的 Excel 工作表。该数据帧包含几个-9值。我想删除那些 -9 而不替换其位置上的任何其他值。

下面是示例数据框:

a   b   c
1 3 -9
-9 2 8
5 -9 -9
-9 0 2

我需要一个如下所示的数据框:

a b c
1 3
2 8
5
0 2

以下是输出文件的一部分:23799 1
11 1.000000 0.1 0.133 1 0.867 0.5 0
23800 2
2 0.100000 0.1 0.133 1 0.867 0.5 0
11 0.900000 0.1 0.133 1 0.867 0.5 0
23801 2
2 0.200000 0.1 0.133 1 0.867 0.5 0
11 0.800000 0.1 0.133 1 0.867 0.5 0
23802 2
2 0.200000 0.1 0.133 1 0.867 0.5 0
11 0.800000 0.1 0.133 1 0.867 0.5 0
23803 3
2 0.600000 0.1 0.133 1 0.867 0.5 0
10 0.100000 0.1 0.173 1 0.827 0.5 0
11 0.300000 0.1 0.133 1 0.867 0.5 0
23804 2
2 0.400000 0.1 0.133 1 0.867 0.5 0
11 0.600000 0.1 0.133 1 0.867 0.5 0
23805 2
2 0.500000 0.1 0.133 1 0.867 0.5 0
11 0.500000 0.1 0.133 1 0.867 0.5 0
23806 3
5 0.100000 0.1 0.1 1 0.9 0.5 0
9 0.400000 0.1 0.089 1 0.889 0.5 0.022
11 0.500000 0.1 0.133 1 0.867 0.5 0
23807 2
5 0.400000 0.1 0.1 1 0.9 0.5 0
9 0.600000 0.1 0.089 1 0.889 0.5 0.022
23808 2
5 0.200000 0.1 0.1 1 0.9 0.5 0
9 0.800000 0.1 0.089 1 0.889 0.5 0.022

最佳答案

我相信您需要所有至少具有一个值-9的行 - 按boolean indexing过滤:

df = df[df.ne(-9).all(axis=1)]
print (df)
a b
0 1 3

详细信息:

检查值是否不等于-9:

print (df.ne(-9))
a b
0 True True
1 False True
2 True False
3 False False

检查每行是否全部为 True:

print (df.ne(-9).all(axis=1))
0 True
1 False
2 False
3 False
dtype: bool
<小时/>

不可能替换为任何内容,需要替换为 0NaN 或某个值:

print (df.replace(-9, np.nan))
a b
0 1.0 3.0
1 NaN 2.0
2 5.0 NaN
3 NaN NaN

唯一的方法是 reshape - 创建 2 列,其中所有数字都在 melt 的一列中:

df1 = df.melt(var_name='A', value_name='B')
df1 = df1[df1['B'] != -9]
print (df1)
A B
0 a 1
2 a 5
4 b 3
5 b 2
7 b 0
9 c 8
11 c 2

关于python - 从 python pandas 数据框中删除一些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54668896/

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