微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐