Мне нужно получить 20 самых больших «MOV12» для «DPTO», используя python и pandas.
У меня есть csv (.del) со следующими полями
"CODCLI" "DPTO" "SEG" "TIPPER" "MOV12"
11 20 "SEG1" "NAT" 6480.00
19 20 "SEG1" "NAT" 0.00
28 20 "SEG1" "NAT" 900.00
29 24 "SEG4" "NAT" 1800.00
31 20 "SEG1" "NAT" 3050.00
38 20 "SEG1" "NAT" 0.00
39 20 "SEG1" "NAT" 0.00
У меня есть csv со следующими полями, учитывая, что «DPTO» всего 12, и у меня есть тысячи данных
на данный момент и удалось получить moyor 'MOV12'
import pandas as pd
df = pd.read_csv("c.del", sep = ' ')
result=df.loc[df[['MOV12']].idxmax().unique()].groupby('DPTO')
print(result)
Я надеюсь, что вы дадите мне предложения, чтобы найти решение, спасибо
Используйте groupby
и apply
с nlargest
import pandas as pd
df = pd.read_csv("c.del", sep = ' ')
result=df.groupby('DPTO').apply(
lambda x: x.nlargest(20,'MOV12')
)
Это найдет строки, соответствующие 20 самым большим значениям «MOV12» для каждого значения «DPTO».
Сделайте это перед вызовом groupby. Я отредактировал сообщение.
еще раз спасибо, просто скиньте мне результаты 4 DPTO а всего их 24 что и будет происходить
Если вы мне выдаете результат, а в консоли они суммировались, я понял
result.to_csv('new_csv_file.csv')
использовать
series.nlargest