pandas系列对象在pandas dataframe对象上的高效布尔运算

时间:2013-10-30 02:31:47

标签: python pandas

我有一个python pandas DataFrame看起来像这样:

                   A      B      C    ...     Z
2012-01-01 00    True  False  False   ...   True
2012-01-02 00    True  False   True   ...  False
2012-01-03 00   False   True  False   ...  False
...              ...    ...    ...    ...   ...
2012-12-31 00   False   True  False   ...  False

列按字母顺序从A到Z命名。我想使用列Z布尔'和'从A到Z的所有列(即伪代码=>> new_dataframe = [A和Z,B和Z ,... Y和Z,Z和Z])

我是否坚持使用for循环在所有列上应用布尔'和'操作(即从A列到Z列)?要以另一种方式重申我的问题,是否有一种有效的方法或内置的pandas函数来在一个pandas数据帧的所有列上“和”一个pandas系列?

2 个答案:

答案 0 :(得分:1)

目前尚不清楚您想要做什么。如果你只想和一些列一起使用,你可以使用内置方法all,如下所示(我已经包含了一些代码来使它成为一个可运行的例子):

import pandas
import numpy

a = numpy.random.rand(10, 10)>0.5
b = pandas.DataFrame(a, columns=list('ABCDEFGHIJ'))
selectedcolumns = ['A', 'B', 'C']
b['Anded'] = b[selectedcolumns].all(1)

如果你想“和”包含最后一列的每一列,你可以

anded = b[selectedcolumns].apply(lambda x, y: x*y, args=[b['J']])

答案 1 :(得分:-1)

这一直是我听过的最奇怪的技术问题。

二进制内容很难调试。

Karnaut Tables可能有帮助......