我有一个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系列?
答案 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可能有帮助......