【发布时间】:2021-04-06 04:19:39
【问题描述】:
如何提高效率?我觉得我应该能够在不遍历整个数据框的情况下做到这一点。基本上我必须将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]
【问题讨论】:
-
你应该重新考虑数据结构
df,不管它是什么......它有四个数组字段,但是对于i的每个值,4 个数组值中有3 个是未定义的。那里有些不对劲。看起来您可能想要一个包含CollectType和具有四个标记值之一的字符串的 2 元组数组。 -
您可以使用字典,其中键是 SSampleCode 值,字典值是放置 CollectType 的列名。因为这是您的作业,所以您可以从那里获取。
标签: python performance loops