首先,如果列中有超过2列为空,则跳过数据行。执行此步骤后,将筛选出超过2列缺少值的行。
然后,由于一些列仍然有1或2列是空的。所以我将用该行的平均值填充空列。
我可以用下面的代码运行第二步,但是,我不知道如何过滤掉超过2列缺少值的行。
我试过使用dropna
,但它删除了表的所有列。
我的代码:
import numpy as np
import pandas as pd
import matplotlib
import matplotlib.pyplot as pp
%matplotlib inline
# high technology exports percentage of manufatory exports
hightech_export = pd.read_csv('hightech_export_1.csv')
#skip the row of data if the columns have more than 2 columns are empty
hightech_export.dropna(axis=1, how='any', thresh=2, subset=None, inplace=False)
# Fill in data with mean value.
m = hightech_export.mean(axis=1)
for i, col in enumerate(hightech_export):
hightech_export.iloc[:, i] = hightech_export.iloc[:, i].fillna(m)
我的数据集:
国家名称2001 2002 2003 2004
菲律宾71人
马耳他62 58 60 58
新加坡60 56
马来西亚58 57
爱尔兰47 41 34 34
格鲁吉亚38 41 24 38
哥斯达黎加
4条答案
按热度按时间wkyowqbh1#
你可以使用
.isnull()
方法来完成你的第一个任务。替换为:
与:
qni6mghb2#
好吧试试这个...
检查df
DF1型
索引为1的记录缺少3个值...
替换并使缺少的值为无
现在编写函数来计算每行缺少的值....并创建一个列表
将此列表用作数据框架中的新列
df1应如下所示
0 20汤姆无1 1无无无3 2 40玛丽20 0 3 30简25 0
因此,过滤变得很容易......
希望能帮上忙...
idv4meu83#
一个简单的方法是以行为基础比较 Dataframe 的值计数和列数,然后用 Dataframe 的平均值替换NaN。
代码可以是:
使用示例数据,它可以提供预期的结果:
uqjltbpv4#
试试这个
替换代码行