gpt4 book ai didi

python - bool 索引 pandas 中的 DataFrame 并用条件为 True 的 Series 的元素替换列

转载 作者:行者123 更新时间:2023-11-28 18:32:17 25 4
gpt4 key购买 nike

我有一个数据框:

>>>df=pd.DataFrame(np.random.randn(3,3))
>>>df
0 1 2
0 -0.685692 0.180900 0.652838
1 0.484584 -0.441004 -1.617281
2 -0.665110 1.196987 -0.133439

例如,我想用 Series s 的相应元素替换行中 >0 的所有元素长度df.shape[0] :

>>>s = pd.Series((3,4,5))
>>>s
0 3
1 4
2 5
dtype: int64

适用于:

>>>df.where(df<=0, s, axis=0)
0 1 2
0 -0.685692 3.000000 3.000000
1 4.000000 -0.441004 -1.617281
2 -0.665110 5.000000 -0.133439

但我的真实标准非常复杂,所以我想以积极的方式陈述标准(而不是像上面的 where 语句中那样用 <=0 而不是 >0 来颠倒标准:

>>>df[df>0] = s

但我得到的不是结果,而是一个错误 axis不见了。如何在上面的语句中指定轴?

错误信息:

Traceback (most recent call last):
Python Shell, prompt 97, line 1
File "/Users/a/anaconda/lib/python2.7/site-packages/pandas/core/frame.py", line 2297, in __setitem__
self._setitem_frame(key, value)
File "/Users/a/anaconda/lib/python2.7/site-packages/pandas/core/frame.py", line 2335, in _setitem_frame
self.where(-key, value, inplace=True)
File "/Users/a/anaconda/lib/python2.7/site-packages/pandas/core/generic.py", line 3940, in where
fill_value=np.nan)
File "/Users/a/anaconda/lib/python2.7/site-packages/pandas/core/frame.py", line 2680, in align
fill_axis=fill_axis, broadcast_axis=broadcast_axis)
File "/Users/a/anaconda/lib/python2.7/site-packages/pandas/core/generic.py", line 3784, in align
fill_axis=fill_axis)
File "/Users/a/anaconda/lib/python2.7/site-packages/pandas/core/generic.py", line 3870, in _align_series
raise ValueError('Must specify axis=0 or 1')
ValueError: Must specify axis=0 or 1

最佳答案

解决方案很明显:

>>>df.where(~(df>0),s)

你只需要否定条件。有时在屏幕前坐得太久容易失明!

关于python - bool 索引 pandas 中的 DataFrame 并用条件为 True 的 Series 的元素替换列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35813200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com