我有一个加载中央文件的数据框。此处每月更新新文件。由于复制到数据框中的文件中几乎没有丢失的列,因此我创建了一个映射数据框,它在满足丢失列的条件时将值添加到数据框。
以下是中心文件示例:
ID Region Country Code User Order Price
1 Germany ABC 2342545
2 Italy DEF 5464545
3 USA GHI 3245325
4 India JKL 676565
5 Mexico MNO 3443252
6 China PQR 565445
7 Germany STU 765765
8 Mexico VWX 564566
9 China YZA 346534
10 India BCD 5675765
这是我缺少区域和代码的映射文件
Country Region Code
Germany EU 1
Italy EU 2
USA America 3
India Asia 4
Mexico America 5
China Asia 6
这是预期的输出:
ID Region Country Code User Order Price
1 EU Germany 1 ABC 2342545
2 EU Italy 2 DEF 5464545
3 America USA 3 GHI 3245325
4 Asia India 4 JKL 676565
5 America Mexico 5 MNO 3443252
6 Asia China 6 PQR 565445
7 EU Germany 2 STU 765765
8 America Mexico 5 VWX 564566
9 Asia China 6 YZA 346534
10 Asia India 4 BCD 5675765
我所做的是使用带有 iterrows() 的 for 循环来更新数据框中的值。
问题是它超级慢,更新大约 60,000 条记录需要大约一个小时或更长时间。
这是我的代码:
for central_update_index, central_update_row in central_bridge_file.iterrows():
print('index: ', central_update_index)
for bridge_match_index, bridge_match_row in central_bridge_matching_file.iterrows():
if bridge_match_row['Country'] == central_update_row['Country']:
if central_update_row['Country / Company (P2)'] == bridge_match_row['Country']:
central_bridge_file.loc[central_update_index, 'Code'] = \
bridge_match_row['Code']
central_bridge_file.loc[central_update_index, 'Region'] = bridge_match_row[
'Region']
有人可以帮助我如何编写 lambda 语句或可以在几分钟内完成的东西吗?
给df,
ID Region Country Code User Order Price
0 1 NaN Germany NaN ABC 2342545
1 2 NaN Italy NaN DEF 5464545
2 3 NaN USA NaN GHI 3245325
3 4 NaN India NaN JKL 676565
4 5 NaN Mexico NaN MNO 3443252
5 6 NaN China NaN PQR 565445
6 7 NaN Germany NaN STU 765765
7 8 NaN Mexico NaN VWX 564566
8 9 NaN China NaN YZA 346534
9 10 NaN India NaN BCD 5675765
和 df_map,
Country Region Code
0 Germany EU 1
1 Italy EU 2
2 USA America 3
3 India Asia 4
4 Mexico America 5
5 China Asia 6
您可以merge
在“国家/地区”上使用这两个数据框:
df[['ID','Country','User','Order Price']].merge(df_map)
输出:
ID Country User Order Price Region Code
0 1 Germany ABC 2342545 EU 1
1 7 Germany STU 765765 EU 1
2 2 Italy DEF 5464545 EU 2
3 3 USA GHI 3245325 America 3
4 4 India JKL 676565 Asia 4
5 10 India BCD 5675765 Asia 4
6 5 Mexico MNO 3443252 America 5
7 8 Mexico VWX 564566 America 5
8 6 China PQR 565445 Asia 6
9 9 China YZA 346534 Asia 6
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句