3

我有一个看起来像这样的 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 系列?

4

2 回答 2

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']])
于 2013-10-30T02:46:18.850 回答
-1

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

二进制的东西可能很难调试。

卡诺特表可能会有所帮助...

于 2013-10-30T02:53:52.880 回答