今データフレームの差分の取り方について行き詰っています。
最近python,pandasの勉強を始めたものです。
データフレーム内の差分の計算方法について質問があります。
例えば、下のような時間でソートされたデータフレームdfがあるとします。
df
時間 | 個数 | 都道府県 |
---|---|---|
2020/6/4 | 4 | 大阪_6 |
2020/6/5 | 21 | 北海道_エビ |
2020/6/6 | 3 | 奈良_鹿 |
2020/6/7 | 45 | 大阪_6 |
2020/6/8 | 62 | 北海道_タイ |
2020/6/9 | 60 | 大阪_8 |
2020/6/10 | 70 | 北海道_ブリ |
2020/6/11 | 80 | 北海道_タコ |
ここで、都道府県でソートし直し、値が同じ場合はさらに時間でソートします。
私がしたいこととしては、「都道府県」の「_」より前(例:大阪_6の場合、大阪)の値が一致している者同士の列「個数」の差分を取っていきたいです。
理想の出力としては下記のようなものです。
時間 | 個数 | 都道府県 |
---|---|---|
2020/6/4 | NaN | 大阪_6 |
2020/6/7 | 41 | 大阪_6 |
2020/6/9 | 15 | 大阪_8 |
2020/6/6 | NAN | 奈良_鹿 |
2020/6/5 | NaN | 北海道_エビ |
2020/6/8 | 41 | 北海道_タイ |
2020/6/10 | 10 | 北海道_ブリ |
2020/6/11 | 10 | 北海道_タコ |
現状取り組んでいることとしましては、下のプログラム程度しか手についておりません。
何卒お力添えをお願いいたします。
python
1import pandas as pd 2 3df = "一番最初に書いた表" 4# まず「都道府県」でソートし、同じ値が複数あれば「時間」でさらにソート 5df = df.sort_values(['都道府県', '時間']) 6 7# ここで下のようにしてしまうと大阪_8と奈良_鹿の差分、奈良_鹿と北海道_エビの差分が求められてしまいます 8df = df.diff()
また、実際の私が抱えている問題では**「都道府県」に相当する部分が100種類以上あります。**
そのため、下記のように手動で分けてそれぞれでdiff()を取るというようなことは難しいように思います。
python
1moji = '大阪' 2moji2 = '北海道' 3moji3 = ... 4 5df1 = df[moji in df['都道府県']] 6df2 = ... 7 8df1 = df1.diff() 9...
理想の出力結果の表のようになるには、どのようにすればいいでしょうか。
お手数をおかけしますが、何卒宜しくお願い致します。
環境
Windows10
python 3.8
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。