示例数据:
dd = pd.DataFrame({
'file': ['file1','file2','file3','file4','file5','file6','file7','file8','file9'],
'prop1': [True,False,False,False,False,False,False,False,False],
'prop2': [False,False,False,False,False,False,False,True,False],
'prop3': [False,True,False,True,False,True,False,False,True]
})
file prop1 prop2 prop3
0 file1 True False False
1 file2 False False True
2 file3 False False False
3 file4 False False True
4 file5 False False False
5 file6 False False True
6 file7 False False False
7 file8 False True False
8 file9 False False True
我需要将所有具有错误prop值(例如示例文件3、5、7)的行(在剪切后不应该在“ dd”数据框中删除)到另一个新数据框
答案 0 :(得分:1)
摩根定律的简单应用
获取没有False的行
def fun(list1,remove_element):
while remove_element in list1:
list1.remove(remove_element)
return list1
或使用DataFrame.all:
dd[dd[['prop1','prop2','prop3']].any(axis=1)]
输出:
dd[~(~dd[['prop1','prop2','prop3']]).all(axis=1)]
获取包含False的行
file prop1 prop2 prop3
0 file1 True False False
1 file2 False False True
3 file4 False False True
5 file6 False False True
7 file8 False True False
8 file9 False False True
或使用DataFrame.all:
dd[~dd[['prop1','prop2','prop3']].any(axis=1)]
输出:
dd[(~dd[['prop1','prop2','prop3']]).all(axis=1)]
答案 1 :(得分:1)
使用DataFrame.any
测试每列至少一个True
,列表中的列名称为
mask = dd[['prop1','prop2','prop3']].any(axis=1)
或者所有列都没有第一个:
mask = dd.iloc[:, 1:].any(axis=1)
或在列名称中包含prop
的列:
mask = dd.filter(like='prop').any(axis=1)
df1 = dd[mask]
如果需要删除行,请使用~
来反转布尔掩码:
df2 = dd[~mask]
print (df1)
file prop1 prop2 prop3
0 file1 True False False
1 file2 False False True
3 file4 False False True
5 file6 False False True
7 file8 False True False
8 file9 False False True
print (df2)
file prop1 prop2 prop3
2 file3 False False False
4 file5 False False False
6 file7 False False False
答案 2 :(得分:0)
{
"naam": "Timmie Ruijgrok",
"iban": "NL41ABNA9079565997",
"straat": "Kuipersstraat",
"straatnummer": 27,
"postcode": "1074EK",
"plaats": "Amsterdam"
}