我刚刚开始使用Pandas作为消除二维数据数组的工具。即使阅读了文档,它还是非常压倒性的。您可以做的很多,以至于我不知道该怎么做,如果有任何道理。
我的数据框(简体):
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
接下来,我们从中做出一个布尔表达式:
In [31]: df.max() > 0
Out[31]:
a False
b True
c True
dtype: bool
接下来,您可以以此索引df.columns(这称为布尔索引):
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。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句