python - return true if list of values is not in dataframe column (every single value)
问题描述
input data a:
obj number
1 111
2 222
3 333
4 555
input data b:
obj number
1 111
2 222
3 333
4 444
input data c:
obj number
1 777
2 222
3 333
4 888
expected output data:
false
true
false
tried:
~set([111,444]).issubset(set(df_tmp['wahlnummer']))
not set([111,444]).issubset(set(df_tmp['wahlnummer']))
([111,444] not in df_tmp['wahlnummer'])
actual output a:
-2
-1
-1
actual output b:
false
true
true
actual output c:
unhashable type: 'list'
however most of the attemps find patterns where one of the 2 values is not in the dataframe column but not if both are not in. there should be some way for a or operator somehow.
Only return true if none of the values is in any row of the dataframe
If i use 111 or 433 not in df then it just thinks all of them don't have the value even if they do have both 1 or none.
edit2: mvce:
df_a = pd.DataFrame({'number': [111, 222, 333, 555]})
df_b = pd.DataFrame({'number': [111, 222, 333, 444]})
df_c = pd.DataFrame({'number': [777, 222, 333, 888]})
print (df_a)
print (df_b)
print (df_c)
print(not(set([111,444]).issubset(set(df_a['number']))))
print(not(set([111,444]).issubset(set(df_b['number']))))
print(not(set([111,444]).issubset(set(df_c['number']))))
result of this:
True
False
True
解决方案
df = pd.read_fwf(StringIO("""obj number
1 433
2 342
3 111
4 345"""))
values1 = [111, 433]
values2 = [111, 433, 222]
print(all([any(df['number'] == v) for v in values1]))
print(all([any(df['number'] == v) for v in values2])
Output:
True
False
推荐阅读
- javascript - 在文件上传器 Javascript 上检测损坏的文件
- python-3.x - 是否可以在 Python (Spyder) 中更新内联图?
- java - 使用自定义比较器会导致排序不一致
- android - Main Activity toolbar not showing after hiding when attaching fragment
- echarts - 如何使用 Echarts 在散点图上绘制圆形图层
- hibernate - 如何选择部分实体,然后使用实体更新数据库中的实体?
- java - Android 应用程序延迟执行不起作用
- django - Django 使用 AJAX 加载更多评论
- sql - 检查查询中的多个空值
- vue.js - 使用 vuex-map-fields 映射计算域