在pandas中,用一系列元素替换列,其中条件是Tru

2024-04-28 08:38:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧:

>>>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 

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

^{pr2}$

它适用于:

>>>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而不是{}的方式,用以下方式来表述:

>>>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

Tags: inpycorepandasdflibpackagesline