基于条件从数据帧中删除值

2024-09-28 22:38:17 发布

您现在位置:Python中文网/ 问答频道 /正文

有必要强调的是,这不是关于删除行。你知道吗

在一个简单的例子中,我有一个来自传感器的文件:

import pandas as pd

df = pd.DataFrame({'Date': ['15/03/2019 10:00:11.000', '15/03/2019 10:00:12.000' , '15/03/2019 10:00:13.000'],
'Pressure' : [-0.162, -0.162, 1.456],
'Conductivity': [-0.001, -0.001, 7.45],
'Water_Temperature': [7.555, 7.555, 8.22],
'Water_Salinity': [0.004, 0.004, 7.63]})

我需要删除'Pressure'<;1所在行中的值,最好不要删除'Date'(有关缺失值和不正确数据量的信息也很重要)。你知道吗

我试着用。方法:

condition = df['Pressure'] < 1
droped_df = df.where(condition ," " )

但它什么也没做。 另外,我不知道如何将条件扩展到其他列,尤其是在原始文件中有更多列的情况下。你知道吗

结果应如下所示:

df = pd.DataFrame({'Date': ['15/03/2019 10:00:11.000', '15/03/2019 10:00:12.000' , '15/03/2019 10:00:13.000'],
'Pressure' : [ ,  , 1.456],
'Conductivity': [ ,  , 7.45],
'Water_Temperature': [ ,  , 8.22],
'Water_Salinity': [ ,  , 7.63]})

感谢您的光临!你知道吗


Tags: 文件importdataframepandasdfdate传感器condition
1条回答
网友
1楼 · 发布于 2024-09-28 22:38:17

使用^{}设置所有列,但不首先由^{}按条件选择:

df.iloc[:, 1:] = df.iloc[:, 1:].mask(df['Pressure'] < 1) 
print (df)
                      Date  Pressure  Conductivity  Water_Temperature  \
0  15/03/2019 10:00:11.000       NaN           NaN                NaN   
1  15/03/2019 10:00:12.000       NaN           NaN                NaN   
2  15/03/2019 10:00:13.000     1.456          7.45               8.22   

   Water_Salinity  
0             NaN  
1             NaN  
2            7.63  

如果真的需要空的空间-获取带有字符串的混合数值,因此所有数值操作都失败:

df.iloc[:, 1:] = df.iloc[:, 1:].mask(df['Pressure'] < 1, '') 
print (df)
                      Date Pressure Conductivity Water_Temperature  \
0  15/03/2019 10:00:11.000                                           
1  15/03/2019 10:00:12.000                                           
2  15/03/2019 10:00:13.000    1.456         7.45              8.22   

  Water_Salinity  
0                 
1                 
2           7.63  

相关问题 更多 >