Как в таблицу добавить нумерацию строк
import pandas as pd
from prettytable import PrettyTable
x = PrettyTable()
df = pd.DataFrame(data=[["Vancouver", 2, 17, 5, 12, 4 ],
["Rangers", 2, 10, 5, 5, 4],
["Tampa", 2, 16, 8, 8, 4],
["Colorado", 2, 13, 12, 1, 2],
["Philadelphia", 2, 7, 13, -6, 2],
["Vegas", 2, 8, 14, -6, 0],
["Boston", 2, 10, 13, -3, 1],
["Devils", 2, 9, 11, -2, 2],
["Calgary", 2, 8, 9, -1, 2],
["Florida", 2, 6, 14, -8, 0]],
columns=["Teams" , "Games" , "GoalIn" , "GoalOut" , "GoalDiff", "Points"],)
df = df.sort_values (by = ["Points", "GoalDiff", "Teams"], ascending = [ False , False, True ]).set_index("Teams")
x.border = True
x.header = True
x.padding_width = 1
df.sort_values(by=["Points", "GoalDiff", "GoalIn", "Teams"],ascending= [False, False, False, True])
print(df)
### Результат:
Games GoalIn GoalOut GoalDiff Points
Teams
Vancouver 2 17 5 12 4
Tampa 2 16 8 8 4
Rangers 2 10 5 5 4
Colorado 2 13 12 1 2
Calgary 2 8 9 -1 2
Devils 2 9 11 -2 2
Philadelphia 2 7 13 -6 2
Boston 2 10 13 -3 1
Vegas 2 8 14 -6 0
Florida 2 6 14 -8 0
##
#Нужно сделать нумерацию строк, пока не получилось((
Ответы (2 шт):
Cоздание индекса в строке df = df.sort_values (by = ["Points", "GoalDiff", "Teams"], ascending = [ False , False, True ]).set_index("Teams")
не нужно, т.к. вы им в этом коде не пользуетесь, и потом его приходится все равно сбрасывать, чтобы установить индекс с порядковой нумерацией.
Поэтому можно обойтись аргументом ignore_index=True
при сортировке, что автоматически создаст индекс 0 .. n
, который при необходимости можно инкрементировать.
Строчка df.sort_values(by=["Points", "GoalDiff", "GoalIn", "Teams"],ascending= [False, False, False, True])
лишняя, она не оказывает на результат никакого действия, поскольку он не присваивается переменной.
df = df.sort_values(by=["Points", "GoalDiff", "Teams"], ascending=[False, False, True], ignore_index=True)
df.index += 1
print(df)
Teams Games GoalIn GoalOut GoalDiff Points
1 Vancouver 2 17 5 12 4
2 Tampa 2 16 8 8 4
3 Rangers 2 10 5 5 4
4 Colorado 2 13 12 1 2
5 Calgary 2 8 9 -1 2
6 Devils 2 9 11 -2 2
7 Philadelphia 2 7 13 -6 2
8 Boston 2 10 13 -3 1
9 Vegas 2 8 14 -6 0
10 Florida 2 6 14 -8 0
Добавите на конец вашей команды
df = df.sort_values (by = ["Points", "GoalDiff", "Teams"], ascending = [ False , False, True ]).set_index("Teams").reset_index()
метод .reset_index()
, т.е. чтобы она выглядела так:
df = df.sort_values(by=["Points", "GoalDiff", "Teams"],
ascending=[False, False, True]).set_index("Teams").reset_index()
и вы получите
Teams Games GoalIn GoalOut GoalDiff Points 0 Vancouver 2 17 5 12 4 1 Tampa 2 16 8 8 4 2 Rangers 2 10 5 5 4 3 Colorado 2 13 12 1 2 4 Calgary 2 8 9 -1 2 5 Devils 2 9 11 -2 2 6 Philadelphia 2 7 13 -6 2 7 Boston 2 10 13 -3 1 8 Vegas 2 8 14 -6 0 9 Florida 2 6 14 -8 0
Примечание:
Когда бы вы хотели нумеровать от 1, добавите после этой команды еще df.index += 1
:
df = df.sort_values(by=["Points", "GoalDiff", "Teams"],
ascending=[False, False, True]).set_index("Teams").reset_index()
df.index += 1
Teams Games GoalIn GoalOut GoalDiff Points 1 Vancouver 2 17 5 12 4 2 Tampa 2 16 8 8 4 3 Rangers 2 10 5 5 4 4 Colorado 2 13 12 1 2 5 Calgary 2 8 9 -1 2 6 Devils 2 9 11 -2 2 7 Philadelphia 2 7 13 -6 2 8 Boston 2 10 13 -3 1 9 Vegas 2 8 14 -6 0 10 Florida 2 6 14 -8 0