Я хочу индивидуально печатать каждое имя с их рабочим временем одно за другим.
фрейм данных панд:
df = pd.DataFrame({'NAME': ['Joesph Morse', 'Katie Plotkin', 'Denny Heaps', 'Evelia Chesson', 'Drew Hassett', 'Robt Buckles', 'Suzy Lafler'], 'CITY': ["New York", "Boston", "Los Angeles", "Chicago", "Atlanta",
"Salt Lake City", "Dallas"], 'WORK HOURS': [3, 7, 0, 6, 10, 1, 9]}
)
В настоящее время я ориентируюсь на столбец "Work Hours"
, где nlargest отфильтровывает верхние большие числа из строки, но это не помогает мне получить имя работника вместе с его часами работы. Как я могу получить их имена тоже?
row = df['WORK HOURS']
leading_workers = row.nlargest(5, 'all')
print('Top First worker',leading_workers.values[0]) # user_1
print('Top Second worker',leading_workers.values[1]) # user_2
print('Top Third worker',leading_workers.values[2]) # user_3
print('Top Forth worker',leading_workers.values[3]) # user_4
print('Top Fifth worker',leading_workers.values[4]) # user_5
Используйте DataFrame.nlargest с указанием имен столбцов для теста и выберите NAME
для leading_workers
:
leading_workers = df.nlargest(5, 'WORK HOURS', 'all')['NAME']
print (leading_workers)
4 Drew Hassett
6 Suzy Lafler
1 Katie Plotkin
3 Evelia Chesson
0 Joesph Morse
Name: NAME, dtype: object
for w in leading_workers:
print (w)
Drew Hassett
Suzy Lafler
Katie Plotkin
Evelia Chesson
Joesph Morse
import pandas as pd
df = pd.DataFrame({'NAME': ['Joesph Morse', 'Katie Plotkin', 'Denny Heaps',
'Evelia Chesson', 'Drew Hassett', 'Robt Buckles', 'Suzy Lafler'],
'CITY': ["New York", "Boston", "Los Angeles", "Chicago", "Atlanta",
"Salt Lake City", "Dallas"],
'WORK HOURS': [3, 7, 0, 6, 10, 1, 9]}
)
df.sort_values(by='WORK HOURS',ascending=False,inplace=True)
Это еще один способ сделать это с выводом
NAME CITY WORK HOURS
4 Drew Hassett Atlanta 10
6 Suzy Lafler Dallas 9
1 Katie Plotkin Boston 7
3 Evelia Chesson Chicago 6
0 Joesph Morse New York 3
5 Robt Buckles Salt Lake City 1
2 Denny Heaps Los Angeles 0
и если вы хотите первые 5 строк
df.head(5)
NAME CITY WORK HOURS
4 Drew Hassett Atlanta 10
6 Suzy Lafler Dallas 9
1 Katie Plotkin Boston 7
3 Evelia Chesson Chicago 6
0 Joesph Morse New York 3
df.head()
уже возвращает первые 5 строк, количество указывать не нужно
Спасибо, это то, что я искал :)