Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据列值将特定行中的列设置为True_Python_Pandas - Fatal编程技术网

Python 根据列值将特定行中的列设置为True

Python 根据列值将特定行中的列设置为True,python,pandas,Python,Pandas,我有一个数据帧: 0 A B C D 1 3 5 1 True 2 4 2 1 True 3 3 5 0 False 我想做的是,如果列A,B的值在列D中的任意位置配对,并且在保持列A,B配对的地方,将列D的所有行都设置为True 例: 上校A,B:3,5。如果A列B=3,5的任意位置的D列等于真,则将D列设置为真 我相信迭代数据帧很容易做到这一点,但我想不出使用pandas或numpy内置函数的方法。如果您知道一种方法,我将非常感谢您的帮助。df[“new\u D”]=df.groupby(

我有一个数据帧:

0 A B C D
1 3 5 1 True
2 4 2 1 True
3 3 5 0 False
我想做的是,如果列A,B的值在列D中的任意位置配对,并且在保持列A,B配对的地方,将列D的所有行都设置为True

例: 上校A,B:3,5。如果A列B=3,5的任意位置的D列等于真,则将D列设置为真

我相信迭代数据帧很容易做到这一点,但我想不出使用pandas或numpy内置函数的方法。如果您知道一种方法,我将非常感谢您的帮助。

df[“new\u D”]=df.groupby([“a”,“B”]).D.transform(任意)
A、B
进行分组,然后对
D
列进行
变换,使其在
组中有
True
的情况下得到
True
;否则它将获得
False

得到

       0    A    B    C      D  new_D
0    1.0  3.0  5.0  1.0   True   True
1    2.0  4.0  2.0  1.0   True   True
2    3.0  3.0  5.0  0.0  False   True

令人惊叹的。我知道有一个比循环更好的方法。我现在唯一的问题是:有没有一种方法可以代替创建一个新的专栏?还是让我放弃Dafterwards@GrahamChapman您可以编写
df.D=df.groupby([“A”,“B”]).D.transform(any)
并将其分配回
D
列。我无法使用df.D我使用的是python 3.7.1.2.4,是否需要进行转换?像df['D']?当我尝试df['D']时,我得到一个不可损坏的类型:“list”error@GrahamChapman有趣的是,当您尝试
df.D=…
时,它会出现什么错误?非常感谢您的帮助。这个问题实际上是由于打字错误造成的。我不小心做了df.groupby([“A”],[“B”]),而不是df.groupby([“A”,“B”])。直到你评论说只做groupby,我才发现它