実現したいこと
Python の Pandas モジュールでdrop_duplicates()を使って、最初か最後のduplicateを残すのではなく複数残す方法が知りたいです。
下記のデータフレームではgroubyを使って「年」と「X」でフィルターしました。そしてsort_values()でXの行で大きい順からソートしていきます。drop_duplicates(subset=['年']でduplicateを消せるが、全部消すのではなく、年の行をベースにXのトップ5を出したいです。
Python
これだ「'年’」一つだけ残して、他は消えてしまいます。 project_order = project_order.drop_duplicates(subset=['年']) 年 X Y Z 30140 2022 18319842.0 392568039.0 410887881.021091 2021 11713559.0 251004833.0 262718392.08746 2020 5847253.0 125298285.0 131145538.0 最終的にはこんな感じで出したいです: 30140 2022 18319842.0 392568039.0 410887881.030139 2022 14986258.0 321134109.0 336120367.030138 2022 14802569.0 317197909.0 332000478.030137 2022 14727432.0 315587829.0 330315261.030136 2022 14441233.0 309454998.0 323896231.021091 2021 11713559.0 251003433.0 267818392.021090 2021 11315019.0 242462899.0 256579718.021000 2021 11213559.0 251005293.0 263418392.029980 2021 11115019.0 242464699.0 234779718.020089 2021 11013559.0 251904893.0 26438392.0 これだと一つだけ残して、他は消えてしまいます。 project_order = project_order.drop_duplicates(subset=['年']) 年 X Y Z 30140 2022 18319842.0 392568039.0 410887881.021091 2021 11713559.0 251004833.0 262718392.08746 2020 5847253.0 125298285.0 131145538.0
該当のソースコード
Python
import pandas as pd df = pd.read_sql(fund, connection)project = df.groupby(['年', 'X']).sum().reset_index() project_order = project.sort_values('X', ascending=False) 年 X Y Z 30140 2022 18319842.0 392568039.0 410887881.030139 2022 14986258.0 321134109.0 336120367.030138 2022 14802569.0 317197909.0 332000478.030137 2022 14727432.0 315587829.0 330315261.030136 2022 14441233.0 309454998.0 323896231.030135 2022 14324130.0 306945643.0 321269773.030134 2022 14147101.0 303152172.0 317299273.030133 2022 12252704.0 262557932.0 274810636.030132 2022 12004158.0 257231951.0 269236109.030131 2022 11993134.0 256995719.0 268988853.030130 2022 11977640.0 256663704.0 268641344.030129 2022 11896815.0 254931755.0 266828570.030128 2022 11817288.0 253227599.0 265044887.021091 2021 11713559.0 251004833.0 262718392.030127 2022 11555996.0 247628492.0 259184488.030126 2022 11523532.0 246932827.0 258456359.030125 2022 11489166.0 246196407.0 257685573.030124 2022 11478084.0 245958937.0 257437021.030123 2022 11366713.0 243572412.0 254939125.030122 2022 11357714.0 243379576.0 254737290.021090 2021 11315019.0 242464699.0 253779718.030121 2022 11267294.0 241442022.0 252709316.030120 2022 11244940.0 240962990.0 252207930.030119 2022 11029067.0 236337156.0 247366223.030118 2022 10981388.0 235315458.0 246296846.030117 2022 10920736.0 234015765.0 244936501.021089 2021 10835113.0 232180984.0 243016097.021088 2021 10675663.0 228764203.0 239439866.030116 2022 10600274.0 227148725.0 237748999.030115 2022 10378019.0 222386113.0 232764132.030114 2022 10375002.0 222321478.0 232696480.030113 2022 10286730.0 220429922.0 230716652.030112 2022 10286054.0 220415446.0 230701500.030111 2022 10238055.0 219386888.0 229624943.030110 2022 10235409.0 219330190.0 229565599.021087 2021 10228850.0 219189637.0 229418487.030109 2022 10185856.0 218268349.0 228454205.030108 2022 10176800.0 218074283.0 228251083.021086 2021 10133210.0 217140222.0 227273432.030107 2022 10032500.0 214982149.0 225014649.030106 2022 10020845.0 214732388.0 224753233.021085 2021 9995860.0 214196997.0 224192857.021084 2021 9977802.0 213810044.0 223787846.021083 2021 9900102.0 212145042.0 222045144.030105 2022 9857726.0 211236988.0 221094714.021082 2021 9786299.0 209706411.0 219492710.021081 2021 9621748.0 206180324.0 215802072.021080 2021 9482413.0 203194555.0 212676968.021079 2021 9034090.0 193587644.0 202621734.021078 2021 8867520.0 190018275.0 198885795.0
0 コメント