我只是开始使用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,那么我想要一个新的数据帧:
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。