【发布时间】:2019-09-19 12:49:11
【问题描述】:
我正在寻找一种更有效的方法来执行检查,然后在必要时应用转换。
这是我当前的代码
for i in tqdm(df.index):
if df.loc[i,'WHP Total Acres'] > df.loc[i,'GIS_ACRES']:
conv_factor = (df.loc[i,'GIS_ACRES'])/(df.loc[i,'WHP Total Acres'])
df.loc[i,'Very Low'] = df.loc[i,'Very Low'] * conv_factor
df.loc[i,'Low'] = df.loc[i,'Low'] * conv_factor
df.loc[i,'Moderate'] = df.loc[i,'Moderate'] * conv_factor
df.loc[i,'High'] = df.loc[i,'High'] * conv_factor
df.loc[i,'Very High'] = df.loc[i,'Very High'] * conv_factor
else:
df.loc[i, 'WHP Total Acres'] = df.loc[i,'WHP Total Acres']
要遍历 350K 记录,这在我的机器上大约需要 2 个小时。我相信一定有更有效的方法。
【问题讨论】:
-
为什么不为所有角色预先计算
conv_factor,然后只使用pd.where子句来简单地将这些列相乘,我认为你让它变得更复杂,那么它必须是
标签: python pandas pandas-loc