Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确保R和Python脚本使用相同的排序规则?_Python_R_Sorting_Collation - Fatal编程技术网

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

如何确保R和Python脚本使用相同的排序规则?,python,r,sorting,collation,Python,R,Sorting,Collation,我在dplyr 1.4.2中使用R3.6,在Pandas 1.0.3中使用Python 3.7 我需要确保我的R和Python脚本都能以相同的顺序对相同的字符串向量进行排序。但是,在我当地的环境中,情况并非如此: 在R中: 在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

我在dplyr 1.4.2中使用R3.6,在Pandas 1.0.3中使用Python 3.7

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

在R中:

在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
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
          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使用了不同的排序规则


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

要保证Python和R shell使用相同的排序规则,请在创建数据帧之前设置相同的排序规则

e、 g:

在R:

Sys.setlocale(category="LC_COLLATE", locale="C")
Sys.getlocale(category="LC_COLLATE")
import locale
locale.setlocale(locale.LC_COLLATE, "C")
locale.getlocale(locale.LC_COLLATE)
[1] “C”

Python中的

Sys.setlocale(category="LC_COLLATE", locale="C")
Sys.getlocale(category="LC_COLLATE")
import locale
locale.setlocale(locale.LC_COLLATE, "C")
locale.getlocale(locale.LC_COLLATE)

(无,无)

您在R和Python中的语言环境设置是什么?另外,R中的
help(“icuSetCollate”)
可能对您有用。由于我在本地环境中运行这两个脚本,我假设它们都继承了我的机器区域设置,但情况显然不是这样。我想以编程方式更改排序规则,以确保在不同的环境中保证相同的行为?检查。在R中,使用
Sys.getlocale()
,我确信Python也有类似的功能。R:Sys.getlocale()[1]“en_AU.UTF-8/en_AU.UTF-8/C/en_AU.UTF-8/en_AU.UTF-8”Python:locale.getlocale()('en_AU','UTF-8'))