python - 如何提高下面代码的速度以在列的每个单元格中进行更改
问题描述
我当前的代码:
for row in range(df1.shape[0]):
words = df1.iloc[row,11].split()
df1.iloc[row,11] = (" ".join(sorted(set(words), key=words.index)))
它的作用是删除熊猫数据框列中字符串中的重复国家代码,以便它们仅按句子的顺序出现一次,例如
国家 |
---|
美国 CN 美国 |
美国 CN 欧盟 |
美国 CN 美国 欧盟 |
美国 美国 美国 美国 |
成为:
国家 |
---|
美国 CN |
美国 CN 欧盟 |
美国 CN 欧盟 |
我们 |
可以看出,遍历 400k 行数据并对其进行编辑非常慢。每个数据集平均 20 分钟。
希望有任何善良的灵魂可以帮助我进一步完善这一点。
解决方案
List Comprehension
和的组合df.apply
应该更快:
In [448]: df.Countries = [' '.join(map(str, i)) for i in df.Countries.str.split().apply(lambda x: set(x))]
In [449]: df
Out[449]:
Countries
0 CN US
1 CN US EU
2 CN US EU
3 US
推荐阅读
- c++ - 递归向量返回
- python - Python给我一个试图修改两个变量的错误
- python - 具有不同特征的数据预处理步骤
- javascript - Javascript将txt文件读入图表
- vue.js - 禁用 Katex 元素的 Vuetify 样式 - .accent 等共享类名称会导致样式问题
- javascript - 无需单击按钮即可自动为网页上的表单起作用
- python - 如何迭代地绘制自定义数据框组
- javascript - 如何使用 webdriverIO js 和 mocha 处理 iframe 内容
- javascript - JavaScript Array:如何获取与“true”值的环绕序列相邻的“false”值的索引?
- php - 启用 (opcache.so) 扩展后,PHP 的 get_class_vars() 输出无效