如果列值在超过 2 列中重复,则删除 pandas 中的行
Dropping rows in pandas if column values are duplicated in more than 2 columns
几乎是我需要的,但我无法根据需要进行调整。
我有一个包含很多列的 df,其中最后 8 列是均值列。
例子
Column1 Column2 Mean1 Mean2 Mean3 Mean4 Mean5 Mean6 Mean7 Mean8
0 A X 50 50 50 50 50 50 50 50
1 B Y 20 21 22 23 24 25 26 27
2 C Z 50 50 50 63 99 54 24 12
3 D F 40 41 42 43 44 45 46 47
Reprex
{'Column1': {0: 'A', 1: 'B', 2: 'C', 3: 'D'}, 'Column2': {0: 'X', 1: 'Y', 2: 'Z', 3: 'F'}, 'Mean1': {0: 50, 1: 20, 2: 50, 3: 40}, 'Mean2': {0: 50, 1: 21, 2: 50, 3: 41}, 'Mean3': {0: 50, 1: 22, 2: 50, 3: 42}, 'Mean4': {0: 50, 1: 23, 2: 63, 3: 43}, 'Mean5': {0: 50, 1: 24, 2: 99, 3: 44}, 'Mean6': {0: 50, 1: 25, 2: 54, 3: 45}, 'Mean7': {0: 50, 1: 26, 2: 24, 3: 46}, 'Mean8': {0: 50, 1: 27, 2: 12, 3: 47}}
如果 8 个平均列中有 3 个或更多列具有相同的值,我想删除数据框中的所有行。
预期输出(第一行和第三行被丢弃,值 50 三次或更多次)
Column1 Column2 Mean1 Mean2 Mean3 Mean4 Mean5 Mean6 Mean7 Mean8
1 B Y 20 21 22 23 24 25 26 27
3 D F 40 41 42 43 44 45 46 47
n = list()
for number in df.T.columns.tolist():
if df.T.groupby(number).size().max()>=3:
n.append(number)
df.drop(n)
我有一个包含很多列的 df,其中最后 8 列是均值列。
例子
Column1 Column2 Mean1 Mean2 Mean3 Mean4 Mean5 Mean6 Mean7 Mean8
0 A X 50 50 50 50 50 50 50 50
1 B Y 20 21 22 23 24 25 26 27
2 C Z 50 50 50 63 99 54 24 12
3 D F 40 41 42 43 44 45 46 47
Reprex
{'Column1': {0: 'A', 1: 'B', 2: 'C', 3: 'D'}, 'Column2': {0: 'X', 1: 'Y', 2: 'Z', 3: 'F'}, 'Mean1': {0: 50, 1: 20, 2: 50, 3: 40}, 'Mean2': {0: 50, 1: 21, 2: 50, 3: 41}, 'Mean3': {0: 50, 1: 22, 2: 50, 3: 42}, 'Mean4': {0: 50, 1: 23, 2: 63, 3: 43}, 'Mean5': {0: 50, 1: 24, 2: 99, 3: 44}, 'Mean6': {0: 50, 1: 25, 2: 54, 3: 45}, 'Mean7': {0: 50, 1: 26, 2: 24, 3: 46}, 'Mean8': {0: 50, 1: 27, 2: 12, 3: 47}}
如果 8 个平均列中有 3 个或更多列具有相同的值,我想删除数据框中的所有行。
预期输出(第一行和第三行被丢弃,值 50 三次或更多次)
Column1 Column2 Mean1 Mean2 Mean3 Mean4 Mean5 Mean6 Mean7 Mean8
1 B Y 20 21 22 23 24 25 26 27
3 D F 40 41 42 43 44 45 46 47
n = list()
for number in df.T.columns.tolist():
if df.T.groupby(number).size().max()>=3:
n.append(number)
df.drop(n)