python - 优化代码熊猫数据框提取子值
问题描述
我需要用一个大数据集优化这个需要几十秒的代码部分。
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é Horizontale 0.1km" --> 01
"02 : visibilité Horizontale 0.2km" --> 02
"03 : visibilité Horizontale 0.3km" --> 03
...
解决方案
让你慢下来的是对数据框进行循环,而不是使用内置函数。
没有 FOR 循环:
data.loc[~isnan(data["x"]), "Visibility"] = data.loc[~isnan(data["x"]), "Visibility"].str[:2]
data.loc[isnan(data["x"]), "Visibility"] = 1000
上面的代码未经测试,因为您没有提供可重现的示例。
推荐阅读
- python - 如何为 Kmeans 散点图并打印异常值
- mysql - Google App Scripts 不会在远程服务器上与 MySQL 建立 Jdbc 连接
- reactjs - React ag-grid(无限行模型)的标题复选框选择
- macos - 如何在 macOS 中运行 Ant Media Server?
- linux - 在脚本中设置和检查别名
- r - 在R studio中将一些土耳其字符大写为“i”到“İ”的问题
- react-hooks - TypeError:无法读取 null 的属性“搜索”。我不知道如何解决
- android-studio - Flutter 中的 youtube_player_flutter 包中没有名为“errorBuilder”的命名参数
- javascript - 如何通过从工作箱 cli 生成服务工作人员文件来启用调试模式?
- nginx - 是否可以使用 nginx 代理将主机设置为服务名称?