Я был очень близок к тому, чтобы выяснить, как отсортировать мой фрейм данных так, как я хочу, я просто не знаю, есть ли более чистый способ сделать это.
Скажем, мои данные фрейм определяется как-
dic = {'firstname':['John','John','John','John','John','Susan','Susan',
'Susan','Susan','Susan','Mike','Mike','Mike','Mike',
'Mike'],
'lastname':['Smith','Smith','Smith','Smith','Smith','Wilson',
'Wilson','Wilson','Wilson','Wilson','Jones','Jones',
'Jones','Jones','Jones'],
'company':['KFC','BK','KFC','KFC','KFC','BK','BK','WND','WND',
'WND','TB','CHP','TB','CHP','TB'],
'paid':[200,300,250,100,900,650,430,218,946,789,305,750,140,860,310],
'overtime':[205,554,840,100,203,640,978,451,356,779,650,950,230,250,980]}
df = pd.DataFrame(dic)
print(df)
с выходом-
firstname lastname company paid overtime
0 John Smith KFC 200 205
1 John Smith BK 300 554
2 John Smith KFC 250 840
3 John Smith KFC 100 100
4 John Smith KFC 900 203
5 Susan Wilson BK 650 640
6 Susan Wilson BK 430 978
7 Susan Wilson WND 218 451
8 Susan Wilson WND 946 356
9 Susan Wilson WND 789 779
10 Mike Jones TB 305 650
11 Mike Jones CHP 750 950
12 Mike Jones TB 140 230
13 Mike Jones CHP 860 250
14 Mike Jones TB 310 980
моя цель - выяснить, зарабатывает ли кто-то больше 1300 в компании без учета сверхурочных (так что только оплачиваемый столбец)
это то, что я пытался -
df = df.groupby(['lastname', 'firstname','company']).sum()
s = df['paid']>1300
df['limit']=s
df = df.loc[df['limit']==True]
del df['limit']
df = df.sort_values(by=['paid'],ascending=False)
print(df)
с выходным результатом -
paid overtime
lastname firstname company
Wilson Susan WND 1953 1586
Jones Mike CHP 1610 1200
Smith John KFC 1450 1348
Я ищу помощь, чтобы потенциально очистить мою работу, но также с несколькими вопросами.
Почему столбец вывода для оплачиваемой и сверхурочной работы увеличен? Могу я вернуть это назад? Кроме того, я хочу суммировать только оплаченный столбец и ничего больше (это нормально, если столбец сверхурочных не появляется в окончательном выводе)
Это больше, что я ищу -
lastname firstname company paid
Wilson Susan WND 1953
Jones Mike CHP 1610
Smith John KFC 1450