我有以下数据框架:
Name Age Tag1 Tag2 Tag3 Tag4 Tag5
A 10 1 2 3 55 6
B 23 4 0 5 0 9
C 19 2 0 0 0 0
D 30 0 0 0 0 0
E 44 0 0 0 4 0从上面的数据帧中,我想删除那些在列Tag1到Tag5中没有任何条目的行。在本例中,它将是行D
有没有一种干净的方法可以在一个非常巨大的数据帧上做到这一点?
我已经尝试过了,但我不认为这是一个正确的方法,因为我必须在这里使用OR条件。如果值出现在任何列中,则不应删除该行。
result_fin[result_fin['Tag1', 'Tag2', 'Tag3', 'Tag4', 'Tag5'] > 0]发布于 2020-02-25 13:50:05
>>> df[(df[df.columns[2:]]).any(1)]
Name Age Tag1 Tag2 Tag3 Tag4 Tag5
0 A 10 1 2 3 55 6
1 B 23 4 0 5 0 9
2 C 19 2 0 0 0 0
4 E 44 0 0 0 4 0或者,使用df.all(1)时反之亦然
>>> df[~(df[df.columns[2:]]==0).all(1)]
Name Age Tag1 Tag2 Tag3 Tag4 Tag5
0 A 10 1 2 3 55 6
1 B 23 4 0 5 0 9
2 C 19 2 0 0 0 0
4 E 44 0 0 0 4 0(1)建议您查看axis 1
您还可以指定列名['Tag1', 'Tag2', 'Tag3', 'Tag4', 'Tag5'],而不是df.columns[2:]。
发布于 2020-02-25 13:52:56
您可以用np.nan替换0,并使用dropna删除相应的行
df = df.replace({0:np.nan}).dropna(subset=["tag1","tag2","tag3","tag4","tag5"],
how="all").fillna(0)https://stackoverflow.com/questions/60388217
复制相似问题