python - 迭代行并应用转换的有效方法

标签 python pandas pandas-loc

我正在寻找一种更有效的方法来执行检查,然后在必要时应用转换。

这是我当前的代码

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 小时。我确信必须有一种更有效的方法。

最佳答案

df['conv_factor'] = 1
df.loc[df['WHP Total Acres'] > df['GIS_ACRES'],'conv_factor'] = df['GIS_ACRES']/df['WHP Total Acres']

df['Very Low'] = df['conv_factor'] * df['Very Low']
.
.
.

conv_factor创建一个辅助列,然后相乘应该得到结果。

只需使用 loc 即可更改所需的值。

关于python - 迭代行并应用转换的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55928028/

相关文章:

python - 用Python读取Large Json并取一个切片作为样本

python - 使用 python 选择 dataFrame 中具有相同索引的行

python - 使用 loc 删除索引过滤的数据框

python - 在 CSV 文件/Pandas Dataframe 中查找标题行的行号

Python从名称字符串的末尾删除中间首字母

Python - Hashlib MD5 在 linux/windows 之间不同

python - Flask-SQLAlchemy 引发未知数据库错误

python - 查找字符串中子字符串最后一次出现的索引

python - Pandas :如何根据交替列值合并行?

python - Paramiko 和 exec_command - 杀死远程进程?