【问题标题】:DF - Sorting specific columns based on character code valuesDF - 根据字符代码值对特定列进行排序
【发布时间】:2021-09-12 15:27:23
【问题描述】:

我有以下数据框,我需要根据第 6、第 3 和第 4 列值执行排序。 排序应基于对应于列值的 ASCII 字符代码。 ""ASCII 字符代码是数字是最低值的字符,后跟大写字母,后跟小写字母""

USOM04200||RCT|19000|99991|13184745|FRML HR RMVR WAX STRP KIT BOX 28 CT|94|I
USOM02100||RCT|19000|99991|13184745|FRML HR RMVR WAX STRP KIT BOX 28 CT|94|I
USOM04200||RCT|19000|99991|13184745|FRML HR RMVR WAX STRP KIT BOX 28 CT|94|I
0638995||UPC|19000|99991|13184745|FRML HR RMVR WAX STRP KIT BOX 28 CT|94|I
USOM00330||RCT|19000|99991|13184745|FRML HR RMVR WAX STRP KIT BOX 28 CT|94|I
USOM00308||RCT|19000|99991|26746352|TXTR HT PLSH CAN 4 OZ|94|I
USOM04300||RCT|19000|99991|26746352|TXTR HT PLSH CAN 4 OZ|94|I
USOM04200||RCT|19000|99991|26746352|TXTR HT PLSH CAN 4 OZ|94|I
0685428||UPC|19000|99991|26746352|TXTR HT PLSH CAN 4 OZ|94|I

基于字符代码的排序后输出如下

USOM00330||RCT|19000|99991|13184745|FRML HR RMVR WAX STRP KIT BOX 28 CT|94|I
USOM04200||RCT|19000|99991|13184745|FRML HR RMVR WAX STRP KIT BOX 28 CT|94|I
USOM04200||RCT|19000|99991|13184745|FRML HR RMVR WAX STRP KIT BOX 28 CT|94|I
USOM02100||RCT|19000|99991|13184745|FRML HR RMVR WAX STRP KIT BOX 28 CT|94|I
0638995||UPC|19000|99991|13184745|FRML HR RMVR WAX STRP KIT BOX 28 CT|94|I
USOM04300||RCT|19000|99991|26746352|TXTR HT PLSH CAN 4 OZ|94|I
USOM00308||RCT|19000|99991|26746352|TXTR HT PLSH CAN 4 OZ|94|I
USOM04200||RCT|19000|99991|26746352|TXTR HT PLSH CAN 4 OZ|94|I
0685428||UPC|19000|99991|26746352|TXTR HT PLSH CAN 4 OZ|94|I

这就是我阅读 DF 的方式

import pandas as pd
df1 = pd.read_csv('input.txt', sep='|', names=['0', '1', '2', '3', '4', '5', '6', '7', '8'])

有人可以帮忙吗

【问题讨论】:

  • 请包括您的预期输出

标签: python pandas dataframe sorting


【解决方案1】:

除非我遗漏了什么,否则这就像使用 .sort_values 一样简单

df1.sort_values(["6","3","4"])

根据需要使用inplace=Trueascending=[bool,bool,bool]

【讨论】:

  • 对不起,如果不考虑列值的 ascii 字符代码,这是正确的。这里不是列值,而是列值的字符代码必须排序
  • 所以 ascii 字符代码只适用于长度为 1 的字符串,您希望如何排序?字符串的 ascii 字符代码的总和?
  • 基于字符代码值的排列顺序。可能总和也可以工作
  • sorted(sort_values 的底层函数)正是这样做的。您的示例数据对于所有数据具有相同的第 3 列和第 4 列值,因此 ascii 根据第 6、4 和 3 列值对数据框进行排序(这是 sort_values 所做的)不会产生您提供的示例输出。跨度>
  • 对不起,请从 1 而不是 0 开始求爱
猜你喜欢
  • 2016-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-03
  • 2021-09-06
  • 1970-01-01
  • 2018-05-10
  • 1970-01-01
相关资源
最近更新 更多