python - 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
抱歉,如果有人问过这个问题。我发现了很多类似的问题,但没有找到一个我们没有手动指定列的问题。
先感谢您!如果您需要更多信息,请告诉我
解决方案
这是为了修复您的代码
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