df = pandas.DataFrame([(11,12,13),(1,3,5),(1,1,2)], columns=['a','b','c'])
a b c
0 11 12 13
1 1 3 5
2 3 1 2
我想创建一个名为d的第四列,它告诉我一行中的每个元素是否大于10.在这个示例中,它看起来像这样.
a b c d
0 11 12 13 True
1 1 3 5 False
2 3 1 2 False
我试过了,这给了我TypeError.
x = df['a']
y = df['b']
z = df['c']
df['d'] = df.apply(lambda x,y,z: True if x > 10 and y > 10 and z > 10 else False)
我也试过了,这给了我ValueError.
df['d'] = True
df['e'] = df['d'].where(df['a'] > 10 and df['b'] > 10 and df['c'] > 10, other=False)
解决方法:
我们可以在表达式df>上使用np.all. 10:
In [423]:
df['d'] = np.all(df > 10, axis=1)
df
Out[423]:
a b c d
0 11 12 13 True
1 1 3 5 False
2 1 1 2 False
In [421]:
df > 10
Out[421]:
a b c
0 True True True
1 False False False
2 False False False
In [422]:
np.all(df > 10, axis=1)
Out[422]:
array([ True, False, False], dtype=bool)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。