我知道pandas数据帧类型有能力测试其值的逻辑。在
代码如下:
import pandas as pd
data = pd.DataFrame(columns=['a', 'b', 'c'])
data = data.append({'a': 'I have data', 'b': 'no more complexe', 'c': 024204}, ignore_index=True)
data = data.append({'a': 'audoausd', 'b': '2048rafaf', 'c': 29313}, ignore_index=True)
data = data.append({'a': 'koplak ente gan', 'b': 'ente g bisa koplak', 'c': 29313}, ignore_index=True)
现在我们有了以下数据帧:
^{pr2}$测试c列的逻辑值并将其保存到变量中
c = data.c > 20000
将c设置为以下值
0 False
1 True
2 True
Name: c, dtype: bool
测试b列的逻辑值并将其保存到变量中
b = data.b.str.contains('koplak')
b值
0 False
1 False
2 True
Name: b, dtype: bool
a列也是
a = data.a.str.contains('koplak')
a值
0 False
1 False
2 True
Name: b, dtype: bool
当我通过执行a&b&c比较所有这些值时,将返回:
0 False
1 False
2 True
dtype: bool
如果涉及到很多列,那么硬代码并不是很好的方式,所以我试图列出一个包含所有列逻辑的列表
logic = [a, b, c]
如何自动比较所有项目以获得a&b&c结果?在
a & b & c
相当于它产生了
^{pr2}$与下面我最初的回答不同(建议
np.logical_and.reduce
),我确信functools.reduce(lambda x,y: x & y, [a, b, c])
将忠实地返回与a & b & c
相同的序列。在(在Python2.7中,}是相同的函数。在Python3中,}。因此,为了将来验证您的代码,请使用
reduce
是一个内置函数。functools.reduce
与{reduce
被从内置组件中移除,只剩下{functools.reduce
。)编辑:使用
np.logical_and.reduce([logic])
可能并非在所有情况下都有效。下面是一个反例:印刷品
但是
np.logical_and.reduce([x,y])
引发了一个值错误相关问题 更多 >
编程相关推荐