时间:2022-12-10来源:www.pcxitongcheng.com作者:电脑系统城
拿到一堆数据,首先我们是要对其进行数据的预处理,其中数据存在一些值为空或者是我们不想要的数据,对其进行删除或者是修改数据值。下面是对于该例子进行删除和修改:
| 1 2 3 4 5 6 7 8 9 |
>>> dfout[]: salary age gender0 10000 23 男1 15000 34 女2 23000 21 男3 0 20 女4 28500 0 男5 35000 37 男 |
1. df.replace()方法:将“男”用1来表示,“女孩”用0来表示。
| 1 2 3 4 5 6 7 8 9 |
>>> df.replace(["男", "女"], [1, 0])out[]: salary age gender0 10000 23 11 15000 34 02 23000 21 13 0 20 04 28500 0 15 35000 37 1 |
2. pd.DataFrame.loc()方法来指定列中数据为0的行:
| 1 2 3 4 5 6 7 8 |
>>> df = df.loc[~((df['salary'] == 0) | (df['age'] == 0))]>>> dfout[]: salary age gender0 10000 23 11 15000 34 02 23000 21 13 35000 37 1 |
还可以用:
df = df.loc[df['salary'] * df['age'] != 0]
1.删除全行都是为0的行
代码如下:
| 1 | >>> df.loc[~(df==0).all(axis=1)] |
看起来比较对称可以这样写:
| 1 | >>> df.loc[(df!=0).any(axis=1)] |
使用dropna方法来删除:
| 1 | >>> new_df = df[df.loc[:]!=0].dropna() |
2.用nan替换零,然后删除所有行中数据都为nan的行。之后,将nan替换为零。
代码如下:
| 1 2 3 4 |
import numpy as npdf = df.replace(0, np.nan)# 把0替换成nandf = df.dropna(how='all', axis=0)# 删除所有为nan的行df = df.replace(np.nan, 0)# 再把nan替换成0 |
3.删除某行中某个值为0的行
代码如下:|
| 1 | >>> df= df[df['salary'] != 0] |
4.使用lambda函数来删除行
代码如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 |
import pandas as pdimport numpy as np np.random.seed(0) df = pd.DataFrame(np.random.randn(5,3), index=['one', 'two', 'three', 'four', 'five'], columns=list('abc')) df.loc[['one', 'three']] = 0 # 把第一行和第三行改为0 print(df)print(df.loc[~df.apply(lambda row: (row==0).all(), axis=1)]) |
输出为:

要在任何行中删除所有值为0的列:
| 1 2 |
new_df = df[df.loc[:]!=0].dropna()new_df |
输出为:

到此这篇关于python数据分析之如何删除value=0行的文章就介绍到这了
2023-03-17
python flask项目打包成docker镜像发布的过程2023-03-17
python调试模块ipdb详解2023-03-17
python使用openai生成图像的超详细教程python cron定时任务触发接口自动化巡检 apscheduler报错:Run time of job …… next run at: ……)” was missed by misfire_grace_time参数 找到任务超时的根本原因...
2023-03-15