Python 在非常大的数据帧上提高迭代的性能

Python 在非常大的数据帧上提高迭代的性能,python,pandas,dataframe,iteration,list-comprehension,Python,Pandas,Dataframe,Iteration,List Comprehension,我有一个熊猫数据框架,它由300万行和50列组成,所有这些行和列都包含整数(正数或负数)。我想创建一个名为“feature”的新列,它从现有的50列中获取最大的负数 例如,如果给定行的50列包含值 -25、-24、-23、-1,1、-23,24,25 “feature”列应返回-1 因为我的数据帧太大,所以我尝试的解决方案花费的时间太长。例如,我曾尝试使用列表理解,但因为我使用的是ItErrorws(),所以速度太慢(itertuples()的性能并没有显著提高): 将numpy导入为np 作为

我有一个熊猫数据框架,它由300万行和50列组成,所有这些行和列都包含整数(正数或负数)。我想创建一个名为“feature”的新列,它从现有的50列中获取最大的负数

例如,如果给定行的50列包含值

-25、-24、-23、-1,1、-23,24,25

“feature”列应返回-1

因为我的数据帧太大,所以我尝试的解决方案花费的时间太长。例如,我曾尝试使用列表理解,但因为我使用的是ItErrorws(),所以速度太慢(itertuples()的性能并没有显著提高):

将numpy导入为np
作为pd进口熊猫
从TQM导入TQM
df=pd.read\u csv(\u file.csv的名称)
对于idx,tqdm中的行(df[list(np.arange(0,50,1)))。ItErrors():
df.loc[idx,'特征']=max([n如果n<0,则n代表行中的n])

对于如此大的数据帧,不必使用线程来计算此功能的最快方法是什么?

您可以使用
dataframe。其中
0
以上的所有值设置为
NaN
,并返回按行
max

df['feature'] = df.iloc[:,:50].where(df.iloc[:,:50].lt(0)).max(1)

我想你把你的部分搞错了,应该是
[:,:50]
真的谢谢@IanS不知道我脑子里为什么会有行,更新了!
df['feature'] = df.iloc[:,:50].where(df.iloc[:,:50].lt(0)).max(1)