【发布时间】:2014-03-09 06:25:52
【问题描述】:
我有一个 DataFrame df:
A B
a 2 2
b 3 1
c 1 3
我想根据以下条件创建一个新列:
如果行A == B: 0
如果行A > B: 1
如果行A < B: -1
所以给定上表,应该是:
A B C
a 2 2 0
b 3 1 1
c 1 3 -1
对于典型的if else 情况,我使用np.where(df.A > df.B, 1, -1),pandas 是否提供了一种特殊的语法来一步解决我的问题(无需创建 3 个新列然后组合结果)?
【问题讨论】:
-
你可以定义一个函数并将其传递给
apply并设置axis=1会起作用,我不确定我能想到一个可以给你想要的操作 -
您的解决方案意味着创建 3 列并将它们组合成 1 列,或者您有不同的想法?
-
您一直在说“创建 3 列”,但我不确定您指的是什么。
-
@DSM 已经回答了这个问题,但我的意思是像
df['C']=df.apply(myFunc(row), axis=1)这样 myFunc 做你想做的事,这不涉及创建“3列”
标签: python pandas conditional