【发布时间】:2016-10-04 21:38:52
【问题描述】:
对于我的问题,我找到了很多解释如何删除具有特定列值的行的条目;但是,我无法找到(我知道可能有一篇文章)一篇文章解决了如何在数据框中删除具有跨多个列(在本例中为 34 个)的特定列值的行。
- How to drop rows of Pandas DataFrame whose value in certain columns is NaN
- Drop Rows by Multiple Column Criteria in DataFrame
- Drop rows in pandas dataframe based on columns value
坏数据
zip age item1 item2 item3 item4 item5 item6 item7 item34
12345 10 1 0 1 1 0 0 1 0
23456 20 10 111 11 1 0 1 9 8
45678 60 1 0 1 1 0 1 0 1
我想保留所有值为 '1' 或 '0' 的行(删除 34 列中 col 值不是 '1' 或 '0' 的所有行)。这是我迄今为止尝试过的:
baddata = pd.DataFrame(data=dirtydata, columns=['zip','age','item1','item2'...'item34'])
gooddata=baddata.dropna() # 一些行有 NaN;删除具有 NaN 值的行
选项-1:
gooddata[gooddata[['item1','item2'...'item34']].isin([0,1])] #this 生成 zip 和 age NaN 的值;不知道为什么?
选项-2:
gooddata[gooddata[['item1','item2'...'item34']].map(len)
选项-3:
cols_of_interest=['item1','item2'...'item34'] gooddata[gooddata.drop(gooddata[cols_of_interest].map(len)
【问题讨论】:
-
让我明确一点,您想删除所有
item34中的值不是0或1的行吗?这是你想要的吗?就这样? -
Joe R - 我只想为各种项目保留那些值为 '0' 或 '1' 的行,即删除所有那些值不是 '0' 或 '1' 的行cols item1, item2, item3, item4,...item34 中的值。
-
预期结果:邮编 item1 item2 item3 item4 item5 item6 item7 item34 12345 10 1 0 1 1 0 0 1 0 45678 60 1 0 1 1 0 1 0 1
-
@Merlin 如何使用 row1 和 row3 中所述的良好数据获得预期结果。 row2 是一个示例,说明如何必须删除或不保留数据框中的值不是 1 或 0 的不同项目。希望我不会让它太混乱。
-
我认为我已经在下面回答了这个问题。