Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于行条件从数据帧中选择列_Python_Sqlite_Numpy_Pandas - Fatal编程技术网

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