如何确保 R 和 Python 脚本使用相同的排序规则?

我将 R 3.6 与 dplyr 1.4.2 一起使用,将 Python 3.7 与 Pandas 1.0.3 一起使用。


我需要确保我的 R 和 Python 脚本都能以相同的顺序对相同的字符串向量进行排序。但是,在我的本地环境中情况并非如此:


在 R 中:


library(dplyr)

df <- data.frame(

      x = c('abc(_01', 'aaa_05', 'abc_01', 'abc_01', 'abc_01', 'abc_01', NA, 'abc_01', 'abc_02', 'abc_02', 'abc_03')

)

df %>% arrange(x)

生成:


         x

1   aaa_05

2   abc_01

3   abc_01

4   abc_01

5   abc_01

6   abc_01

7   abc_02

8   abc_02

9   abc_03

10 abc(_01

11      NA

在 Python 中:


import pandas as pd

import numpy as np

df = pd.DataFrame({

'x': ['abc(_01', 'aaa_05', 'abc_01', 'abc_01', 'abc_01', 'abc_01', np.nan, 'abc_01', 'abc_02', 'abc_02', 'abc_03']

})

df.sort_values(['x']).reset_index(drop=True)

生成:


          x

0    aaa_05

1   abc(_01

2    abc_01

3    abc_01

4    abc_01

5    abc_01

6    abc_01

7    abc_02

8    abc_02

9    abc_03

10      NaN

我相信这是由于 Python 和 R 使用不同的排序规则造成的。


如果是这种情况,我如何配置两种语言以使用相同的排序规则?


慕姐8265434
浏览 83回答 1
1回答

白猪掌柜的

为了保证 Python 和 R shell 使用相同的排序规则,在创建数据帧之前设置相同的排序规则。例如。:在 R 中:Sys.setlocale(category="LC_COLLATE", locale="C")Sys.getlocale(category="LC_COLLATE")[1] “丙”在 Python 中:import localelocale.setlocale(locale.LC_COLLATE, "C")locale.getlocale(locale.LC_COLLATE)(不,不)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python