2017-07-18 184 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] 

這將只保留具有多個唯一值的行。