首页 > 解决方案 > 优化代码熊猫数据框提取子值

问题描述

我需要用一个大数据集优化这个需要几十秒的代码部分。

        if ((isnan(data["x"][i]))==False):
            data["Visibility"][i]=int(data["Visibility"][i][0:2]) # Extract the first two numbers 
        else:
            data["x"][i]=1000 # Replace null values with 1000 

编辑:对于我的数据集,我有字符串列值,我想用相同值的子集替换它们

这是一个例子:

"01 : visibilité Horizo​​ntale 0.1km" --> 01

"02 : visibilité Horizo​​ntale 0.2km" --> 02

"03 : visibilité Horizo​​ntale 0.3km" --> 03

...

标签: pythonpandas

解决方案


让你慢下来的是对数据框进行循环,而不是使用内置函数。

没有 FOR 循环:

data.loc[~isnan(data["x"]), "Visibility"] = data.loc[~isnan(data["x"]), "Visibility"].str[:2]
data.loc[isnan(data["x"]), "Visibility"] = 1000

参考


上面的代码未经测试,因为您没有提供可重现的示例。


推荐阅读