如何在数据框中删除包含特定值的行三次或多次

时间:2019-10-01 07:08:36

标签: python dataframe

在熊猫的数据框中,使用Python3

如何删除包含特定值的行三遍或三遍以上。

例如

输入:

Date    A   B   C   D   E   F   G   H

2018-11-16  82873   -420    -18974  0   233064  105 4671

2018-11-17  -67566  0   17348   -7281   0   -358    0

2018-11-18  117400  -6030   0   -7734   761842  0   935

2018-11-21  -101588 0   192 0   135460  7251    0

2018-11-22  0   63148   0   2032    0   3902    1347

预期输出:

Date    A   B   C   D   E   F   G   H

2018-11-16  82873   -420    -18974  0   233064  105 4671

2018-11-18  117400  -6030   0   -7734   761842  0   935

2 个答案:

答案 0 :(得分:0)

pandas.DataFrame.eqsumge一起使用:

df[~df.eq(0).sum(1).ge(3)]

输出:

         Date       A     B      C     D       E    F     G   H
0  2018-11-16   82873  -420 -18974     0  233064  105  4671 NaN
2  2018-11-18  117400 -6030      0 -7734  761842    0   935 NaN

答案 1 :(得分:0)

您可以尝试以下操作:

import pandas as pd
data = """2018-11-16  82873   -420    -18974  0   233064  105 4671
2018-11-17  -67566  0   17348   -7281   0   -358    0
2018-11-18  117400  -6030   0   -7734   761842  0   935
2018-11-21  -101588 0   192 0   135460  7251    0
2018-11-22  0   63148   0   2032    0   3902    1347""".split('\n')
data = [r.split() for r in data]
df = pd.DataFrame.from_records(data)
from collections import defaultdict
def find(x):
  cnt = defaultdict(int)
  for i in x:
    cnt[i] += 1
  for v in cnt.values():
    if v >= 3:
      return False
  return True
cols = df.apply(find,axis=1)  
df[cols]

输出(您可以自己添加列,我只是在做一个简单的示例)

0   1   2   3   4   5   6   7
0   2018-11-16  82873   -420    -18974  0   233064  105 4671
2   2018-11-18  117400  -6030   0   -7734   761842  0   935