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,我才发现它