我想从您身边得到一点帮助。 接下来的问题:我确实有两个很大的excel文件,它们通过concat堆叠并合并。结果文件由两个索引(MultiIndex)和两个数字列组成。我计算了两个数值列之间的差。现在,我需要根据差异列对值进行排序,而无需更改0级索引的顺序,即
ID Description Difference
4533754105 BESCHRIFTUNG - TINTENSTRAHLDRUCK 0.000
DOSIEREN (1.SEITE) 0.000
DOSIEREN (2.SEITE) 0.000
EINSETZEN 1. SEITE MIT ROBOTER 0.000
EINSETZEN 2. SEITE MIT ROBOTER 0.000
EINSPRÜHEN GIEßSCHALE MIT TRENNMITTEL 0.000
EINSTREICHEN DICHTUNG MIT SCHMIERMITTEL -0.235
ENTFORMEN PATRONE MIT LUFTDÜSE UND PRÜFE -0.140
FADENWICKEL MIT MITTELROHR -0.149
FALTEN PAPIER UND ABSCHNEIDEN AUTO. 0.000
KLEBEN BALG -0.159
VERPACKEN NACH VERPACKUNGSDATEI 0.000
ZUSCHNEIDEN FADENÜBERSTAND -0.056
1444517S01 1. SEITE - EINSETZEN FILTERTEIL -0.408
2. SEITE- NEHMEN FILTERTEIL KOMPL. MIT 0.000
BESCHRIFTUNG - TINTENSTRAHL 0.000
EINRAFFEN BALG UND SICHERN MIT RAFFGUMMI -0.372
EINSPRÜHEN GIEßSCHALE MIT TRENNMITTEL 0.000
ENTFORMEN PATRONE UND PRÜFEN -0.270
FALTEN PAPIER UND ABSCHNEIDEN AUTO. 0.000
KLEBEN BALG -0.364
VERPACKEN NACH VERPACKUNGSDATEI -0.480
以上是堆叠,合并和计算差异后的原始数据。 ID和描述是这里的索引。如您所见,差异没有顺序
我需要对差异列的值进行排序,即
4533754105 EINSTREICHEN DICHTUNG MIT SCHMIERMITTEL -0.235
KLEBEN BALG -0.159
FADENWICKEL MIT MITTELROHR -0.149
ENTFORMEN PATRONE MIT LUFTDÜSE UND PRÜFE -0.140
ZUSCHNEIDEN FADENÜBERSTAND -0.056
BESCHRIFTUNG - TINTENSTRAHLDRUCK 0.000
DOSIEREN (1.SEITE) 0.000
DOSIEREN (2.SEITE) 0.000
EINSETZEN 1. SEITE MIT ROBOTER 0.000
EINSETZEN 2. SEITE MIT ROBOTER 0.000
EINSPRÜHEN GIEßSCHALE MIT TRENNMITTEL 0.000
FALTEN PAPIER UND ABSCHNEIDEN AUTO. 0.000
VERPACKEN NACH VERPACKUNGSDATEI 0.000
如果我应用sort_values函数,则会弄乱索引,即同一组中有不同的索引。这是因为排序值对整个列的值进行排序,但是在这种情况下,我需要在同一组内对ID组中的sort_values进行排序。
我拆开了框架,但是由于文件的大小,它确实变得混乱了。
任何想法
非常感谢您的支持
答案 0 :(得分:2)
可以从pandas 0.23+中按列和级别进行排序:
df = df.sort_values(['ID','Difference'])
print (df)
Difference
ID Description
1444517S01 VERPACKEN NACH VERPACKUNGSDATEI -0.480
1. SEITE - EINSETZEN FILTERTEIL -0.408
EINRAFFEN BALG UND SICHERN MIT RAFFGUMMI -0.372
KLEBEN BALG -0.364
ENTFORMEN PATRONE UND PRÜFEN -0.270
2. SEITE- NEHMEN FILTERTEIL KOMPL. MIT 0.000
BESCHRIFTUNG - TINTENSTRAHL 0.000
EINSPRÜHEN GIEßSCHALE MIT TRENNMITTEL 0.000
FALTEN PAPIER UND ABSCHNEIDEN AUTO. 0.000
4533754105 EINSTREICHEN DICHTUNG MIT SCHMIERMITTEL -0.235
KLEBEN BALG -0.159
FADENWICKEL MIT MITTELROHR -0.149
ENTFORMEN PATRONE MIT LUFTDÜSE UND PRÜFE -0.140
ZUSCHNEIDEN FADENÜBERSTAND -0.056
BESCHRIFTUNG - TINTENSTRAHLDRUCK 0.000
DOSIEREN (1.SEITE) 0.000
DOSIEREN (2.SEITE) 0.000
EINSETZEN 1. SEITE MIT ROBOTER 0.000
EINSETZEN 2. SEITE MIT ROBOTER 0.000
EINSPRÜHEN GIEßSCHALE MIT TRENNMITTEL 0.000
FALTEN PAPIER UND ABSCHNEIDEN AUTO. 0.000
VERPACKEN NACH VERPACKUNGSDATEI 0.000
或者:
df1 = df.sort_values(['ID','Difference'], ascending=[False, True])
print (df1)
Difference
ID Description
4533754105 EINSTREICHEN DICHTUNG MIT SCHMIERMITTEL -0.235
KLEBEN BALG -0.159
FADENWICKEL MIT MITTELROHR -0.149
ENTFORMEN PATRONE MIT LUFTDÜSE UND PRÜFE -0.140
ZUSCHNEIDEN FADENÜBERSTAND -0.056
BESCHRIFTUNG - TINTENSTRAHLDRUCK 0.000
DOSIEREN (1.SEITE) 0.000
DOSIEREN (2.SEITE) 0.000
EINSETZEN 1. SEITE MIT ROBOTER 0.000
EINSETZEN 2. SEITE MIT ROBOTER 0.000
EINSPRÜHEN GIEßSCHALE MIT TRENNMITTEL 0.000
FALTEN PAPIER UND ABSCHNEIDEN AUTO. 0.000
VERPACKEN NACH VERPACKUNGSDATEI 0.000
1444517S01 VERPACKEN NACH VERPACKUNGSDATEI -0.480
1. SEITE - EINSETZEN FILTERTEIL -0.408
EINRAFFEN BALG UND SICHERN MIT RAFFGUMMI -0.372
KLEBEN BALG -0.364
ENTFORMEN PATRONE UND PRÜFEN -0.270
2. SEITE- NEHMEN FILTERTEIL KOMPL. MIT 0.000
BESCHRIFTUNG - TINTENSTRAHL 0.000
EINSPRÜHEN GIEßSCHALE MIT TRENNMITTEL 0.000
FALTEN PAPIER UND ABSCHNEIDEN AUTO. 0.000