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)