2017-07-18 80 views
0

这一直在杀我!将循环转换为列表理解?

任何想法如何将其转换为列表理解?

for x in dataframe: 
    if dataframe[x].value_counts().sum()<=1: 
     dataframe.drop(x, axis=1, inplace=True) 
+0

'dataframe'的使用让我觉得这可能是'pandas'?那是你正在使用的? “drop”是做什么的?它实际上是否修改了列表?如果不是,那么你在哪里收集创建新列表的数据? – idjaw

+2

这对列表理解来说并不合适......是否有理由让它看起来像这样? (它不会返回任何数据,而是一遍又一遍地修改对象)。 –

回答

1

[dataframe.drop(x, axis=1, inplace=True) for x in dataframe if dataframe[x].value_counts().sum() <= 1]

我没有使用过大熊猫还没有,但dataframe.drop的文件说,它返回一个新的对象,所以我认为它会工作。

0

我可能会建议去其他方式和过滤它,我不知道你的数据帧,但这样的事情应该工作:

counts_valid = df.T.apply(pd.value_counts()).sum() > 1 
df = df[counts_valid] 

或者,如果我看到你在做什么,你可能会更好用

counts_valid = df.T.nunique() > 1 
df = df[counts_valid] 

这将只保留具有多个唯一值的行。