我将 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)生成: x1 aaa_052 abc_013 abc_014 abc_015 abc_016 abc_017 abc_028 abc_029 abc_0310 abc(_0111 NA在 Python 中:import pandas as pdimport numpy as npdf = 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)生成: x0 aaa_051 abc(_012 abc_013 abc_014 abc_015 abc_016 abc_017 abc_028 abc_029 abc_0310 NaN我相信这是由于 Python 和 R 使用不同的排序规则造成的。如果是这种情况,我如何配置两种语言以使用相同的排序规则?
1 回答

白猪掌柜的
TA贡献1893条经验 获得超10个赞
为了保证 Python 和 R shell 使用相同的排序规则,在创建数据帧之前设置相同的排序规则。
例如。:
在 R 中:
Sys.setlocale(category="LC_COLLATE", locale="C")
Sys.getlocale(category="LC_COLLATE")
[1] “丙”
在 Python 中:
import locale
locale.setlocale(locale.LC_COLLATE, "C")
locale.getlocale(locale.LC_COLLATE)
(不,不)
添加回答
举报
0/150
提交
取消