【发布时间】:2016-08-17 23:30:25
【问题描述】:
我有以下MCVE:
#!/usr/bin/env python3
import pandas as pd
df = pd.DataFrame([True, False, True])
print("Whole DataFrame:")
print(df)
print("\nFiltered DataFrame:")
print(df[df[0] == True])
输出如下,符合我的预期:
Whole DataFrame:
0
0 True
1 False
2 True
Filtered DataFrame:
0
0 True
2 True
好的,但是 PEP8 样式似乎是错误的,它说:E712 与 True 的比较应该是 if cond is True 或 if cond。所以我把它改成了is True而不是== True,但现在它失败了,输出是:
Whole DataFrame:
0
0 True
1 False
2 True
Filtered DataFrame:
0 True
1 False
2 True
Name: 0, dtype: bool
发生了什么事?
【问题讨论】:
-
“好的,但是 PEP8 样式似乎是错误的,它说:E712 与 True 的比较应该是 if cond is True or if cond.”。怎么回事? PEP8 实际上说“是:
if greeting,否:if greeting == True,更糟糕的是if greeting is True”。 -
在任何情况下
df[df[0]]不是更可取吗? -
@IanS 可能是(不像 IMO 那样可读),但问题不在于那个 :^) “聪明人和聪明人有什么区别?-聪明人摆脱困境任何飞行颜色的麻烦,一个聪明的人都不会进入它。”