Python Pandas 根据列的最大值删除列

标签 python numpy pandas

我刚刚开始使用 Pandas 作为处理二维数据数组的工具。这是 super 压倒性的,即使在阅读了文档之后。你可以做的事情太多了,以至于我不知道该怎么做,如果这有意义的话。

我的数据框(简化):

Date       Stock1  Stock2   Stock3
2014.10.10  74.75  NaN     NaN
2014.9.9    NaN    100.95  NaN 
2010.8.8    NaN    NaN     120.45

所以每一列只有一个值。

我想删除所有最大值小于 x 的列。举个例子,如果 x = 80,那么我想要一个新的 DataFrame:

Date        Stock2   Stock3
2014.10.10   NaN     NaN
2014.9.9     100.95  NaN 
2010.8.8     NaN     120.45

如何实现?我看过 dataframe.max() ,它给了我一个系列。我可以使用它,或者以某种方式在 select() 中使用 lambda 函数吗?

最佳答案

使用 df.max() 进行索引。

In [19]: from pandas import DataFrame

In [23]: df = DataFrame(np.random.randn(3,3), columns=['a','b','c'])

In [36]: df
Out[36]: 
          a         b         c
0 -0.928912  0.220573  1.948065
1 -0.310504  0.847638 -0.541496
2 -0.743000 -1.099226 -1.183567


In [24]: df.max()
Out[24]: 
a   -0.310504
b    0.847638
c    1.948065
dtype: float64

接下来,我们用它做一个 bool 表达式:

In [31]: df.max() > 0
Out[31]: 
a    False
b     True
c     True
dtype: bool

接下来,你可以通过这个索引 df.columns(这被称为 bool 索引):

In [34]: df.columns[df.max() > 0]
Out[34]: Index([u'b', u'c'], dtype='object')

您最终可以将其传递给 DF:

In [35]: df[df.columns[df.max() > 0]]
Out[35]: 
          b         c
0  0.220573  1.948065
1  0.847638 -0.541496
2 -1.099226 -1.183567

当然,您可以使用任何您想要的值作为丢弃的截止值,而不是 0。

关于Python Pandas 根据列的最大值删除列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26897536/

相关文章:

python - 使用 Python 更新销售人员的案例所有者

python - 在 Windows 上将 Word2vec 与 Tensorflow 结合使用

python - 在 python 源代码中查找 _collections

python - 如何在 Theano 中分配/更新张量共享变量的子集?

python - 带有一行数据的 Pandas read_csv() 返回 Empty Dataframe

python - sqlalchemy:停止长时间运行的查询

python - 在 numpy 数组中查找模式的最有效方法

python - 从 numpy 矩阵中最优提取列

pandas - 使用 ArrayType 列将 UDF 重写为 pandas udf

python - 如何在 pandas 中以复杂的条件进行分箱