Otrzymałem następujące DataFrame:
Dis System_num Energy
0 0.9 1 -2.3108
1 0.7 1 11.8735
2 1.2 1 -2.3408
3 2.0 1 -0.3485
4 2.0 2 -0.9379
5 0.7 2 7.4776
6 1.5 2 -2.2877
7 0.9 2 -4.1789
8 2.0 3 -3.6596
9 1.0 3 -18.4582
10 0.9 3 -16.2202
11 0.7 3 16.6290
Chcę posortować wartości (rosnąco) w kolumnie Dis dla każdej liczby w nazwie System_num, mam na myśli:
0 0.7 1 11.8735
1 0.9 1 -2.3108
2 1.2 1 -2.3408
3 2.0 1 -0.3485
4 0.7 2 7.4776
5 0.9 2 -4.1789
6 1.5 2 -2.2877
7 2.0 2 -0.9379
8 0.7 3 16.6290
8 0.9 3 -16.2202
10 1.0 3 -18.4582
11 2.0 3 -3.6596
Odpowiedzi:
1 dla odpowiedzi № 1posługiwać się sort_values
z System_num
jako pierwsza kolumna do sortowania według
df.sort_values(["System_num", "Dis"])
Innym sposobem, aby to zrobić bez sortowania System_num
kolumna
Ustawiać
df = pd.DataFrame([
[ 2. , 2. , -0.9379],
[ 0.7 , 2. , 7.4776],
[ 1.5 , 2. , -2.2877],
[ 0.9 , 2. , -4.1789],
[ 0.9 , 1. , -2.3108],
[ 0.7 , 1. , 11.8735],
[ 1.2 , 1. , -2.3408],
[ 2. , 1. , -0.3485],
[ 2. , 3. , -3.6596],
[ 1. , 3. , -18.4582],
[ 0.9 , 3. , -16.2202],
[ 0.7 , 3. , 16.629 ]
], columns=["Dis", "System_num", "Energy"])
df.groupby("System_num", sort=False)
.apply(pd.DataFrame.sort_values, by="Dis")
.reset_index(drop=True)