np.where
具有向量化if/else的语义(类似于Apache Spark的when
/otherwise
DataFrame方法)。我知道我可以在大熊猫Series
上使用np.where
,但pandas
通常定义了自己的API来代替原始的numpy
函数,这通常更方便pd.Series
/pd.DataFrame
。我发现。然而,乍一看,它具有完全不同的语义。我无法找到一个方法来改写np.where
使用熊猫where
最基本的例子:熊猫等价于np.where
# df is pd.DataFrame
# how to write this using df.where?
df['C'] = np.where((df['A']<0) | (df['B']>0), df['A']+df['B'], df['A']/df['B'])
我失去了一些东西明显?或者是熊猫where
用于完全不同的用例,尽管np.where
的名称相同?
docstring http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.where.html似乎很好地解释它(虽然它可以使用一个或两个例子)。注意简短的描述,以及'cond'和'other'参数的描述,但忽略这些参数被调用的选项。 –
@WarrenWeckesser对文档的第二次阅读,我想我明白了......这就像'(df.A + df.B).where((df ['A'] <0)|(df [' B']> 0),df.A/df.B)',对吧?我想我会删除我的问题。 – max
@max:不要删除。这将有可能在未来帮助某人。 – bernie