python-如何检查几个pandas DataFrame.Series元素的条件并将结果应用于新列?

我有一个pandas.Dataframe.

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)

相关文章

转载:一文讲述Pandas库的数据读取、数据获取、数据拼接、数...
Pandas是一个开源的第三方Python库,从Numpy和Matplotlib的基...
整体流程登录天池在线编程环境导入pandas和xrld操作EXCEL文件...
 一、numpy小结             二、pandas2.1为...
1、时间偏移DateOffset对象DateOffset类似于时间差Timedelta...
1、pandas内置样式空值高亮highlight_null最大最小值高亮背景...