{
"data": {
"aString": "some string",
"anInt": 57,
"aFloat": 1.23,
}
}
和pd.DataFrame.all
将所有值转换为pd.DataFrame.any
,并使用关键字bool
声明所有身份。只要我们对非空列表和字符串计算为True的事实很好,这是可以的。但是,假设情况并非如此。
True
解决方法是断言与>>> pd.DataFrame([True, 'a']).all().item()
True # Wrong
的平等,但与True的比较听起来并不像pythonic。
True
问题:我们可以在不使用>>> (pd.DataFrame([True, 'a']) == True).all().item()
False # Right
True
断言身份
答案 0 :(得分:6)
首先,我不建议这个。请不要在数据框列中使用混合dtypes - 这会破坏数据帧的用途,它们不比列表更有用,也不会比循环更有效。
现在,针对您的实际问题 spolier alert ,您无法克服==
。但您可以使用eq
功能隐藏它。你可以使用
df.eq(True).all()
或者,
df.where(df.eq(True), False).all()
请注意
df.where(df.eq(True), False)
0
0 True
1 False
如果您因任何其他原因想要将非“True”值转换为False,您可能会觉得有用。
答案 1 :(得分:3)
我实际上会使用
(pd.DataFrame([True, 'a']) == True).all().item()
通过这种方式,您可以检查对象的价值,而不只是检查" truthy-ness"它的。
这对我来说似乎是完美的pythonic,因为你明确地检查对象的价值,而不仅仅是它是否是一个真正的价值。