Это немного продолжение одного из моих предыдущих вопросов, с которым мне помогли.
Вот в чем проблема. Скажем, есть фрейм данных-
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'], as_index=False).agg({'paid':'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).reset_index()
del df['index']
print(df)
с выходом-
lastname firstname company paid
0 Wilson Susan WND 1953
1 Jones Mike CHP 1610
2 Smith John KFC 1450
То, что я хочу сделать сейчас, относительно похоже, но я больше не хочу суммировать значения, я просто хочу сохранить исходную информацию из строки, сумма которых в сумме превышает 1300 на основе столбца «оплачено».
Желаемый результат -
firstname lastname company paid overtime
0 John Smith KFC 200 205
1 John Smith KFC 250 840
2 John Smith KFC 100 100
3 John Smith KFC 900 203
4 Susan Wilson WND 218 451
5 Susan Wilson WND 946 356
6 Susan Wilson WND 789 779
7 Mike Jones CHP 750 950
8 Mike Jones CHP 860 250