对 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)]
我有一个大 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)]