Python 基于行条件从数据帧中选择列
我有一个熊猫数据框Python 基于行条件从数据帧中选择列,python,sqlite,numpy,pandas,Python,Sqlite,Numpy,Pandas,我有一个熊猫数据框 In [1]: df = DataFrame(np.random.randn(10, 4)) 有没有办法只选择(最后一行)值>0的列 所需的输出将是一个新的数据帧,其中所有行与列关联,其中最后一行>0您可以使用从条件生成的布尔序列对感兴趣的列进行索引: In [30]: df = pd.DataFrame(np.random.randn(10, 4)) df Out[30]: 0 1 2 3 0 -0.6
In [1]: df = DataFrame(np.random.randn(10, 4))
有没有办法只选择(最后一行)值>0的列
所需的输出将是一个新的数据帧,其中所有行与列关联,其中最后一行>0您可以使用从条件生成的布尔序列对感兴趣的列进行索引:
In [30]:
df = pd.DataFrame(np.random.randn(10, 4))
df
Out[30]:
0 1 2 3
0 -0.667736 -0.744761 0.401677 -1.286372
1 1.098134 -1.327454 1.409357 -0.180265
2 -0.105780 0.446195 -0.562578 -0.746083
3 1.366714 -0.685103 0.982354 1.928026
4 0.091040 -0.689676 0.425042 0.723466
5 0.798305 -1.454922 -0.017695 0.515961
6 -0.786693 1.496968 -0.112125 -1.303714
7 -0.211216 -1.321854 -0.892023 -0.583492
8 1.293255 0.936271 1.873870 0.790086
9 -0.699665 -0.953611 0.139986 -0.200499
In [32]:
df[df.columns[df.iloc[-1]>0]]
Out[32]:
2
0 0.401677
1 1.409357
2 -0.562578
3 0.982354
4 0.425042
5 -0.017695
6 -0.112125
7 -0.892023
8 1.873870
9 0.139986
查看pandasql:
这篇博客文章是使用SQL for DataFrames的一个很好的教程:
这应该让你开始:
from pandasql import *
import pandas
def pysqldf(q):
return sqldf(q, globals())
q = """
SELECT
*
FROM
df
WHERE
value > 0
ORDER BY 1;
"""
df = pysqldf(q)
基本上这个解决方案使用了非常基本的,特别是Brent方法-肯定会进入到你共享的链接中..谢谢
In [201]: df = pd.DataFrame(np.random.randn(10, 4))
In [202]: df
Out[202]:
0 1 2 3
0 -1.380064 0.391358 -0.043390 -1.970113
1 -0.612594 -0.890354 -0.349894 -0.848067
2 1.178626 1.798316 0.691760 0.736255
3 -0.909491 0.429237 0.766065 -0.605075
4 -1.214366 1.907580 -0.583695 0.192488
5 -0.283786 -1.315771 0.046579 -0.777228
6 1.195634 -0.259040 -0.432147 1.196420
7 -2.346814 1.251494 0.261687 0.400886
8 0.845000 0.536683 -2.628224 -0.238449
9 0.246398 -0.548448 -0.295481 0.076117
In [203]: df.iloc[:, (df.iloc[-1] > 0).values]
Out[203]:
0 3
0 -1.380064 -1.970113
1 -0.612594 -0.848067
2 1.178626 0.736255
3 -0.909491 -0.605075
4 -1.214366 0.192488
5 -0.283786 -0.777228
6 1.195634 1.196420
7 -2.346814 0.400886
8 0.845000 -0.238449
9 0.246398 0.076117