我正在从excel导入数据,其中一些行可能在列中有注解,并且不是dataframe的一部分。例如,下面:
H1 H2 H3
* highlighted cols are PII
sam red 5
pam blue 3
rod green 11
* this is the end of the data
将上述文件导入dfpa时,看起来如下所示:
dfPA:
Index H1 H2 H3
1 *highlighted cols are PII
2 sam red 5
3 pam blue 3
4 rod green 11
5 * this is the end of the data
我想删除第一行和最后一行。这就是我所做的。
# get count of cols in df
input: cntcols = dfPA.shape[1]
output: 3
# get count of cols with nan in df
input: a = dfPA.shape[1] - dfPA.count(axis=1)
output:
0 2
1 3
2 3
4 3
5 2
(where a is a series)
# convert a from series to df
dfa = a.to_frame()
# delete rows where no. of nan's are greater than 'n'
n = 1
for r, row in dfa.iterrows():
if (cntcols - dfa.iloc[r][0]) > n:
i = row.name
dfPA = dfPA.drop(index=i)
这不管用。有办法做到这一点吗?
1条答案
按热度按时间hgtggwj01#
您应该使用pandas.dataframe.dropna方法。它有一个
thresh
参数,可用于定义要删除行/列的最小nan数。设想以下 Dataframe :
可以使用以下命令删除带有nan的列:
这个
thresh
参数定义保留该列的非nan值的最小数目:如果您想根据nan的数量进行推理:
如果需要筛选行而不是列,请删除axis参数或使用
axis=0
: