首页 > 解决方案 > 如何提高下面代码的速度以在列的每个单元格中进行更改

问题描述

我当前的代码:

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 分钟。

希望有任何善良的灵魂可以帮助我进一步完善这一点。

标签: pythonpandasdataframe

解决方案


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

推荐阅读