您是说第0列和第1列吗?
>>> df.sort([0, 1]) 0 1 2 32 1 865545 20 203 1 865584 297 07 1 865665 296 09 1 865700 297 05 2 865628 292 56 10 865662 297 010 10 866429 297 08 11 865694 293 111 11 866438 297 04 22 865625 297 0 0 Z 762320 296 11 Z 861349 297 0
[更新]
如果您的数据不是数字(所有元素都是字符串),则会发生这种情况。
>>> df.valuesarray([['Z', '762320', '296', '1'], ['Z', '861349', '297', '0'], ['1', '865545', '20', '20'], ['1', '865584', '297', '0'], ['22', '865625', '297', '0'], ['2', '865628', '292', '5'], ['10', '865662', '297', '0'], ['1', '865665', '296', '0'], ['11', '865694', '293', '1'], ['1', '865700', '297', '0'], ['10', '866429', '297', '0'], ['11', '866438', '297', '0']], dtype=object)
字符串排序是预期的结果:
>>> df.sort([0, 1]) 0 1 2 32 1 865545 20 203 1 865584 297 07 1 865665 296 09 1 865700 297 06 10 865662 297 010 10 866429 297 08 11 865694 293 111 11 866438 297 05 2 865628 292 54 22 865625 297 00 Z 762320 296 11 Z 861349 297 0
尝试先转换值:
>>> def convert(v):...: try:...: return int(v) ...: except ValueError:...: return v>>> pandas.Dataframe([convert(c) for c in l] for l in df.values) .sort([0, 1]) 0 1 2 32 1 865545 20 203 1 865584 297 07 1 865665 296 09 1 865700 297 05 2 865628 292 56 10 865662 297 010 10 866429 297 08 11 865694 293 111 11 866438 297 04 22 865625 297 00 Z 762320 296 11 Z 861349 297 0
有什么不同?元素现在是数字的:
>>> pandas.Dataframe([convert(c) for c in l] for l in df.values) .sort([0, 1]).valuesarray([[1.0, 865545.0, 20.0, 20.0], [1.0, 865584.0, 297.0, 0.0], [1.0, 865665.0, 296.0, 0.0], [1.0, 865700.0, 297.0, 0.0], [2.0, 865628.0, 292.0, 5.0], [10.0, 865662.0, 297.0, 0.0], [10.0, 866429.0, 297.0, 0.0], [11.0, 865694.0, 293.0, 1.0], [11.0, 866438.0, 297.0, 0.0], [22.0, 865625.0, 297.0, 0.0], ['Z', 762320.0, 296.0, 1.0], ['Z', 861349.0, 297.0, 0.0]], dtype=object)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)