pandas做运算的一个坑!
问题描述
pandas实际开发中进行运算时的一个坑!
import pandas as pd
v = {'value': 'a'}
d = [{'name': 'abc', 'age': 10}, {'name': None, 'age': 11}, {'name': 'def', 'age': 9}]
df = pd.DataFrame(d)
new_1 = df[(df['age'] >= 10) | df['name'].str.contains(v['value'])]
new_2 = df[df['name'].str.contains(v['value']) | (df['age'] >= 10)]
print('-'*80)
print(df)
print('-'*80)
print(new_1)
print('-'*80)
print(new_2)
输出
--------------------------------------------------------------------------------
age name
0 10 abc
1 11 None
2 9 def
--------------------------------------------------------------------------------
age name
0 10 abc
1 11 None
--------------------------------------------------------------------------------
age name
0 10 abc
想请问为什么 new1 和 new2的结果不一样?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
None 是python中的对象,不是pandas的数据类型,以python的规则进行运算
把None改为
''
.