首页 > 解决方案 > Pandas:如何循环并删除一列有单个条目的行

问题描述

所以我有一个带有一些列的熊猫数据框(下面是一个简单数据框的代码,但真正的数据框有超过 100 列):

X = pd.DataFrame([["A","Z"],["A","Z"],["B","Z"]],columns=["COL1","COL2"])

我想要做的是遍历每一列并删除仅发生单个事件的行。例如,在第 1 列中,我们只有一个“B”实例,因此我想在此基础上删除该行。

但是,我想浏览数据框的每一列,并继续删除我有此类实例的行。

以下代码适用于我指定名称时:

X = X[X.groupby('COL1').COL1.transform(len) > 1]

但是,我不确定如何循环使用此代码。显然我可以手动输入每个列名,但我想更正确地执行此操作。显然以下方法不起作用:

for column in X:
    X[X.groupby(column).column.transform(len)>1]

    COL1    COL2
0   A   Z
1   A   Z
2   B   Y

抱歉,如果有人问过这个问题。我发现了很多类似的问题,但没有找到一个我们没有手动指定列的问题。

先感谢您!如果您需要更多信息,请告诉我

标签: pythonpandas

解决方案


这是为了修复您的代码

X[X.groupby('COL1').COL2.transform('count')>1]
  COL1 COL2
0    A    Z
1    A    Z

通常我会做duplicated

X[X.COL1.duplicated(keep=False)]
  COL1 COL2
0    A    Z
1    A    Z

推荐阅读