我有一个数据集显示如下。你知道吗
我想做的是三件事。 第一步:AA到CC都是索引,不是一个实际的数据集,不过,很乐意保留在数据集中以备将来使用。 第2步:每行计数0值。 步骤3:如果行中的0大于20%,这意味着在本例中大于2,因为DD到MM是10列,请删除该行。 所以我做了一个愚蠢的方法来实现以上三个步骤。你知道吗
df = pd.read_csv("dataset.csv", header=None)
df_bool = (df == "0")
print(df_bool.sum(axis=1))
然后我得到一个预期的结果如下所示。你知道吗
0 0
1 0
2 1
3 0
4 1
5 8
6 1
7 0
因此删除了第5行,如下所示。你知道吗
df2 = df.drop([5], axis=0)
print(df2)
即使这不是一个优雅的,有点愚蠢的方式,这也很有效。 但是,如果我以header=0的形式导入数据集,那么这种方法根本不起作用。你知道吗
df = pd.read_csv("dataset.csv", header=0)
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
怎么会这样? 另外,如果我想写一个带有循环、计数和删除函数的代码,代码是什么样子的?你知道吗
您可以继续使用^{} :
首先我们计算每行的列数和零数:
然后,我们只选择零小于20%的行。你知道吗
一行:
如果您可以发布数据框在pandas中的外观,而不是excel文件的图片,那就太好了。但是,构造一个虚拟df
第1步,可以使用.set\u index()方法指定索引,如下所示
df.set_index(['index1','index2','index3'],inplace=True)
在数据帧过滤过程中,您可以使用从
df_bool.sum(axis=1)
得到的返回值,而不是手工进行过滤,如下所示使用它你可以删除那些行,假设20%,那么你会使用
df = df.loc[(df==0).sum(axis=1) / (df.shape[1])<0.2]
在头文件问题上,如果没有看到文件或数据帧的样子,就有点难以回答
相关问题 更多 >
编程相关推荐