对 pdf df 进行子集化的最有效方法

Most efficient way to subset a pd df

我有一个大 pandas DF (4 X 96103)。基于第一行值的某些条件,我想将 DF 的一个子集提取到较小的 DF_subset。对于单个案例,这可以通过多种方式完成,并且不会损害计算。但我将需要对数千个文件应用此操作(相同条件和相同操作)。此应用程序最有效的方法是什么。下面是我所做的片段,

tt = []
x1=[]
x2=[]
x3=[]
for i in range(np.shape(DF)[1]):
    if ((float(DF.iloc[0,i]) > -5.0) and (float(DF.iloc[0,i])) < 15.0):
       tt.append(DF.iloc[0,i] )
       x1.append(DF.iloc[1,i] )
       x2.append(DF.iloc[2,i] )
       x3.append(DF.iloc[3,i] )
X = (np.concatenate((tt,x1,x2,x3),axis=0))
X = pd.DataFrame(np.reshape(X,(4,-1)))

原始 DF 如下所示,红色标记区域是我希望 DF_subset 成为

的示例

您需要 transpose df 然后 select 按条件。使用:

df = DF.T
df[(df[0].astype(float)) > -5.0)&(df.iloc[0].astype(float)) < 15.0)]

示例: 输入 df:

O输出 df:

示例代码:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(3,10))
df2 = df.T
df2[(df2[0]>.2)&(df2[0]<.7)]