选择仅包含一个负值的列

时间:2017-09-14 14:59:05

标签: python pandas numpy

我想选择只有一个负值或没有负值的列。我如何构建这个看这个例子呢?我一直在寻找类似的东西,虽然没有成功。谢谢你的帮助。

N = 5
np.random.seed(0)

df1 = pd.DataFrame(
          {'X':np.random.uniform(-3,3,N),
           'Y':np.random.uniform(-3,3,N),
           'Z':np.random.uniform(-3,3,N),
                })

          X         Y         Z
0  0.292881  0.875365  1.750350
1  1.291136 -0.374477  0.173370
2  0.616580  2.350638  0.408267
3  0.269299  2.781977  2.553580
4 -0.458071 -0.699351 -2.573784

所以在这个例子中我想要返回X和Z列。

3 个答案:

答案 0 :(得分:4)

使用np.sign获取迹象。寻找负面迹象。获取每列的负数。比较1的阈值来获取掩码。从掩码中选择列名称。

因此,实施 -

df1.columns[(np.sign(df1)<0).sum(0)<=1].tolist()

或直接与0进行比较,以替换np.sign -

的使用
df1.columns[(df1<0).sum(0)<=1].tolist()

这为我们提供了列名。要选择整个列,我认为其他解决方案已经涵盖了它。

答案 1 :(得分:2)

您可以使用iloc来做到这一点,即

df1.iloc[:,((df1<0).sum(0) <= 1).values]

或(谢谢Jon)

df1.loc[:,df1.lt(0).sum() <= 1]

输出:

          X         Z
0  0.292881  1.750350
1  1.291136  0.173370
2  0.616580  0.408267
3  0.269299  2.553580
4 -0.458071 -2.573784

答案 2 :(得分:0)

或者您可以尝试:

<md-card>
    <input
      style="color:black"
      id="{{pacId}}"
      name='address'
      class="mapControls"
      type="text"
      value=""
      placeholder="Enter Address">
    <div id="{{mapId}}"></div>
</md-card>