我有一个使用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
发生了什么事?
答案 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
文档。
Full_Names_Test_2['MarketCap'].where(Full_Names_Test_2['MarketCap'] == 'n/a', 7)