从python数据帧中删除一些元素
我有一张excel表格,有20000行和5列。此数据帧包含多个-9值。我想删除那些-9,而不替换其位置上的任何其他值 下面是示例数据帧:从python数据帧中删除一些元素,python,pandas,dataframe,Python,Pandas,Dataframe,我有一张excel表格,有20000行和5列。此数据帧包含多个-9值。我想删除那些-9,而不替换其位置上的任何其他值 下面是示例数据帧: a b c 1 3 -9 -9 2 8 5 -9 -9 -9 0 2 我需要一个如下所示的数据帧: abc 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.1000
a b c
1 3 -9
-9 2 8
5 -9 -9
-9 0 2
我需要一个如下所示的数据帧:
abc
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.1 0.089 1 0.889 0.5 0.022
我相信您需要至少有一个值的所有行-9
-按以下方式筛选:
详细信息:
检查值是否不等于-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
无法将其替换为零,需要替换为
0
或NaN
或某些值:
print (df.replace(-9, np.nan))
a b
0 1.0 3.0
1 NaN 2.0
2 5.0 NaN
3 NaN NaN
唯一的方法是“重塑”-通过以下方式创建两列,其中一列中包含所有数字:
我相信您需要至少有一个值的所有行
-9
-按以下方式筛选:
详细信息:
检查值是否不等于-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
无法将其替换为零,需要替换为
0
或NaN
或某些值:
print (df.replace(-9, np.nan))
a b
0 1.0 3.0
1 NaN 2.0
2 5.0 NaN
3 NaN NaN
唯一的方法是“重塑”-通过以下方式创建两列,其中一列中包含所有数字:
从@jezrael回答的注释来看,似乎您希望将结果导出为文本文件(例如csv或tsv)。由于您不打算在pandas中使用数据帧,因此我将使用一个简单的
替换
df = pd.DataFrame(
[[1, 3, -9], [-9, 2, 8], [5, -9, -9], [-9, 0, 2]],
columns=("a", "b", "c"),
)
df.replace(to_replace=-9, value='')
.to_csv('/tmp/foo.csv', index=False)
导出的csv如下所示:
a,b,c
1,3,
,2,8
5,,
,0,2
从@jezrael回答的注释来看,似乎您希望将结果导出为文本文件(例如csv或tsv)。由于您不打算在pandas中使用数据帧,因此我将使用一个简单的替换
df = pd.DataFrame(
[[1, 3, -9], [-9, 2, 8], [5, -9, -9], [-9, 0, 2]],
columns=("a", "b", "c"),
)
df.replace(to_replace=-9, value='')
.to_csv('/tmp/foo.csv', index=False)
导出的csv如下所示:
a,b,c
1,3,
,2,8
5,,
,0,2
使用布尔索引执行此操作的另一种方法:
数据帧示例:
结果:
使用布尔索引执行此操作的另一种方法:
数据帧示例:
结果:
我刚刚编辑了这本书。请看。我想从excel工作表中删除-9,但也不想将其替换为space@lsr729-这是不可能的,需要将其替换为一些值,如0、NaN或空格。我需要.txt中的该文件作为模型输入,该模型将空格作为值读取并给出错误。@lsr729-您能具体说明吗?因为如果使用scipy
中的某个方法,显然无法处理缺少的值或字符串,因此替换为NaN或空格或某些字符串不是好主意。需要删除这些行或替换为数字。我不想删除行,但要删除值为-9的单元格。有没有办法删除-9值而不替换为其他值?我刚刚编辑了que。请看。我想从excel工作表中删除-9,但也不想将其替换为space@lsr729-这是不可能的,需要将其替换为一些值,如0、NaN或空格。我需要.txt中的该文件作为模型输入,该模型将空格作为值读取并给出错误。@lsr729-您能具体说明吗?因为如果使用scipy
中的某个方法,显然无法处理缺少的值或字符串,因此替换为NaN或空格或某些字符串不是好主意。需要删除这些行或替换为数字。我不想删除行,但要删除值为-9的单元格。有什么方法可以在不替换任何其他内容的情况下删除-9值吗?@jezrael引用OP的一条评论:“我需要.txt中的文件作为模型输入,该模型读取空格作为值并给出错误。”@suvayuI它不能解决问题:(我需要它,没有任何空间!没有空间!也许你是指其他东西?请你编辑这个问题,并提供一个你需要它的例子?不是数据框,而是输出文件。我已经编辑了这个问题,并从输出文件中放入了一些内容。@jezrael引用了OP的评论:“我需要.txt中的文件作为模型输入,该模型读取空格作为值并给出错误。”@suvayuI它不能解决问题:(我需要它,没有任何空间没有空间!也许你是指其他东西?请你编辑这个问题,并提供一个你需要它是什么样的例子?不是数据框,而是输出文件。我已经编辑了这个问题,并从输出文件中放入了一些内容。不清楚数据框的内容如何映射到你想要的输出文件你能补充一些解释吗?例如,你的示例数据框只有整数,但是输出文件充满了浮点数,而且行似乎是分组的。很难理解数据框与此输出的关系。不清楚数据框的内容如何映射到你引用的输出文件。你能不能添加一些解释?例如,您的示例数据帧只有整数,但输出文件中充满了浮点数,而且行似乎是分组的。很难理解数据帧与此输出的关系。我是supris