在python中删除循环以提高效率

2024-10-01 13:37:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我该如何提高效率?我觉得我应该能够做到这一点,而不必在整个数据帧中循环。基本上,我必须将列CollectType拆分为多个列,具体取决于列SSampleCode中的值

for i in range(0,len(df)):
  if df.SSampleCode[i]=='Rock':
     df.R_SampleType[i]=df.CollectType[i]
  elif df.SSampleCode[i]=='Soil':
     df.S_SampleType[i]=df.CollectType[i]
  elif df.SSampleCode[i]=='Pan Con':
     df.PC_SampleType[i]=df.CollectType[i]
  elif df.SSampleCode[i]=='Silt':
     df.SS_SampleType[i]=df.CollectType[i]

Tags: 数据indfforlenifrangepan
1条回答
网友
1楼 · 发布于 2024-10-01 13:37:54

这可以使用遮罩(矢量方法)完成:

for i in range(0,len(df)):
  if df.SSampleCode[i]=='Rock':
     df.R_SampleType[i]=df.CollectType[i]

将是

mask = df.SSampleCode=='Rock'
df.R_SampleType[mask] = df.CollectType[mask]

这将给您带来良好的性能提升

相关问题 更多 >