如何按列方式剪辑pandas dataframe?

时间:2017-02-14 04:24:52

标签: python pandas

我有

In [67]: a
Out[67]:

   0  1  2
0  1  2  3
1  4  5  6

当我跑

In [69]: a.clip(lower=[1.5,2.5,3.5],axis=1)

我得到了

ValueError: other must be the same shape as self when an ndarray

这是预期的吗? 我期待得到类似的东西:

Out[72]:

     0    1    2
0  1.5  2.5  3.5
1  4.0  5.0  6.0

2 个答案:

答案 0 :(得分:7)

您可以使用系列代替numpy数组,以便标记对齐:

df
Out: 
   A  B
0  1  4
1  2  5
2  3  6

df.clip(lower=pd.Series({'A': 2.5, 'B': 4.5}), axis=1)
Out: 
     A    B
0  2.5  4.5
1  2.5  5.0
2  3.0  6.0

答案 1 :(得分:0)

  

lower:float或array_like,默认无

根据API reference,你应该使用相同形状的数组。

import numpy as np
import pandas as pd

...

print df.shape

(2, 3)

print df.clip(lower=(df.clip(lower=(np.array([[n+1.5 for n in range(df.shape[1])] for _ in range(df.shape[0])])), axis=1))

     0    1    2
0  1.5  2.5  3.5
1  4.0  5.0  6.0