np.where不能在我的熊猫中工作

时间:2015-10-21 18:10:10

标签: python pandas where

我有一个使用Pandas的np.where问题让我发疯,我似乎无法通过Google,文档等解决。

我希望有人有洞察力。我确信它并不复杂。

我有一个df,我正在检查一列中的值 - 如果该值是'n / a'(作为字符串,而不是.isnull()),则将其更改为另一个值。

Full_Names_Test_2['MarketCap'] == 'n/a'

返回:

70      True
88     False
90      True
145     True
156     True
181     True
191     True
200     True
219     True
223    False
Name: MarketCap, dtype: bool

以便该部分有效。

但是这个:

Full_Names_Test_2['NewColumn'] = np.where(Full_Names_Test_2['MarketCap'] == 'n/a', 7)

返回:

ValueError: either both or neither of x and y should be given

发生了什么事?

1 个答案:

答案 0 :(得分:10)

您需要传递布尔掩码和(两个)值列:

np.where(Full_Names_Test_2['MarketCap'] == 'n/a', 7)
# should be
np.where(Full_Names_Test_2['MarketCap'] == 'n/a', Full_Names_Test_2['MarketCap'], 7)

请参阅np.where文档。

或者使用the where Series method

Full_Names_Test_2['MarketCap'].where(Full_Names_Test_2['MarketCap'] == 'n/a', 7)