前提・実現したいこと
Pandasを使ってデータフレームの操作をしたいと考えています。具体的には、
- 既存のデータフレームで、特定カラムにIDが2つ入っている行を探して複製する(1つのIDは7文字)
- 1つめのIDは既存行に残す
- 2つめのIDは複製した行に上書きする
しかし、3.に失敗しています。
発生している問題・エラーメッセージ
3.の「2つめのIDを複製した行に上書きする」を実現するには、IDカラムと複製行の交わるセルを指定する必要があります。そこで、データフレームのインデックスを使えばうまくいくのではないかと考え、「既存データフレームの行数+特定行のインデックス」を指定しました。しかし、複製行のインデックスが既存行と同じになってしまい、該当セルが上書きされず、元のままになります。
該当のソースコード
Python3.8.2
1convs = pd.read_csv('hoge.csv', index_col=0) 2convs = convs.reset_index() 3convs = convs.drop('index', axis=1) 4 5count = len(convs) #データフレームの行数を取得 6 7for index, row in convs.iterrows(): 8 if (len(str(row['id_columns']))) > 7: 9 ids = str(row['id_columns']) 10 convs['id_columns'][index] = str(ids[0:6]) 11 convs = convs.append(row) 12 convs['id_columns'][index+count] = str(ids[7:13]) #ここのconvs['id_columns'][index+count]という指定がうまく行かず、IDが上書きされない 13 14convs.to_csv('test.csv') #結果をCSVに保存
試したこと
特定行のインデックスを指定する方法がないか調べてみましたが、情報が見つかりませんでした。解決策がありましたら、ぜひ教えていただけるとうれしいです。
バージョン情報など
Pythonのバージョンは3.8.2です。
回答1件
あなたの回答
tips
プレビュー