我有熊猫的数据
data = [
['ID', 'Time', 'oneMissing', 'singleValue', 'empty', 'oneEmpty'],
['CS1-1', 1, 10000, None, None, 0],
['CS1-2', 2, 20000, 0.0, None, 0],
['CS1-1', 2, 30000, None, None, 0],
['CS1-2', 1, 10000, None, None, None],
['CS1-11', 1, None, 0.0, None, None],
['CS1-2', 3, 30000, None, None, None]
]
我尝试按ID和Time列排序,结果应该是
^{pr2}$我正在使用pandas dataframe进行排序,也尝试过与natsort一起使用,但我无法使其工作。要么得到索引包含重复项的错误(我使用ID作为索引),要么它按字符串值排序。在
这里只是一个例子。我不知道它是什么格式,可能是数字字母或数字字母数字。我只需要把所有的数字作为一个数字来比较。我看过“natsort”,这似乎对数组是正确的。所以我认为应该可以使用它来对ID进行排序,然后重新索引数据。在
我看过很多类似的资料,但没有任何运气: Alphanumeric sortingSort dataframes
注意:此方法假设您希望按
X
对ABC-X
形式的ID
进行数字排序。^{} 支持按多个序列排序,并避免向数据帧添加额外的序列。此示例按
ID
的后缀进行数字排序,然后按Time
对进行排序:使用
str.extract
,sort_values
,然后使用索引重新索引df
。在这是假设您的ID列遵循模式“XXX-NUMBER”。在
一个防愚弄的解决方案将涉及使用^{} 模块,它擅长于快速自然排序。再加一点润滑油,我们就可以整理你的数据了。在
^{pr2}$使用PyPi安装:
pip install natsort
。在我想你在找
sort_values
:注意:如果您希望
^{pr2}$CS1-11
在CS1-2
之后(这不是标准的字符串顺序),您可能需要引入一个长度列,例如相关问题 更多 >
编程相关推荐