前提・実現したいこと
pandasでデータフレームの欠損値を、その次の値から特定の部分だけ抜き出して代入したいです。
以下の様なデータフレームが手元にあります。
python
1print(df)
date | attend | detail |
---|---|---|
2011-01-01 | 45 | 今日はレシーブ練習を中心に行った。 |
2011-01-02 | 35 | 試合を4マッチ、田中のミスが目立ち個別練習 |
2011-01-03 | NaN | NaN |
2011-01-04 | 39 | <1/3>この日は大会に向けて引き続き試合を多く行った。<1/4>サーブ練習多め、次はラリー多くしてほしいとの要望あり。 |
detail欄にはテニスの練習のログを残しているようなデータです。
前日に記入漏れがあった場合、翌日に明記して合わせて書かせています。
翌日に明記した場合のdetail欄を2つに分け、1/3と1/4それぞれに代入し直したいと思っているのですが…
つまり、以下のようなデータフレームを最終的には作りたいと思っています。
date | attend | detail |
---|---|---|
2011-01-01 | 45 | 今日はレシーブ練習を中心に行った。 |
2011-01-02 | 35 | 試合を4マッチ、田中のミスが目立ち個別練習 |
2011-01-03 | NaN | この日は大会に向けて引き続き試合を多く行った。 |
2011-01-04 | 39 | サーブ練習多め、次はラリー多くしてほしいとの要望あり。 |
簡略化のために短く書いていますが、実際は膨大な量なのでpythonで扱いたいと思っています。
発生している問題・エラーメッセージ・ソースコード
detailの列をリストとして扱い、<>で日付が変わっていることを利用して、splitで分けてそれぞれ新しいリストに代入した後、データフレームに合成しようと思いました。
python
1body = list(df["detail"]) 2 3n = 0 4 5l = [] 6 7for i in body : 8 if body[n] == "NaN" : 9 l.append(body[n+1].split(r'>')[2]) 10 else : 11 l.append(body[n]) 12 13 n = n + 1 14
しかし、返ってきたリスト(l)は中身が変わっていませんでした。
ループ内の記述(split辺り)が間違っているのでしょうか…必ずしもリストの代入で対応する必要もないでしょうか。
もし質問重複しておりましたら大変申し訳ありません。
初歩的な質問で申し訳ありませんが、どなたかご存知の方がいらっしゃったらお力添え願えないでしょうか?
どうぞよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/19 05:46