pandasにインポートされたDBからのデータのセットがあり、type
列が含まれています。type
'no-extra'または 'has-extra'のいずれかになります。私がやりたいのは、type
値が「has-extra」であるDataFrameのすべての行を複製することです。複製された行では、この値を「EXTRA」に設定します。したがって、このデータから始めると、次のようになります。
data = [
{'id': 1, 'type': 'no-extra'},
{'id': 2, 'type': 'has-extra'},
{'id': 3, 'type': 'no-extra'},
{'id': 4, 'type': 'has-extra'}
]
data_df = pd.DataFrame(data)
私は最終的にしたい:
result = [
{'id': 1, 'type': 'no-extra'},
{'id': 2, 'type': 'has-extra'},
{'id': 2, 'type': 'EXTRA'},
{'id': 3, 'type': 'no-extra'},
{'id': 4, 'type': 'has-extra'},
{'id': 4, 'type': 'EXTRA'}
]
result_df = pd.DataFrame(result)
注-この場合のIDは、DataFrameのインデックスではなく、DB内の元のデータを検索するために使用できるキーです。これを効率的に行う方法について何か考えはありますか?
使用してboolean indexing
、DataFrame.append
そしてDataFrame.sort_values
:
extra = data_df[data_df['type'].eq('has-extra')].copy()
extra['type'] = 'EXTRA'
data_df = data_df.append(extra).sort_values('id').reset_index(drop=True)
id type
0 1 no-extra
1 2 has-extra
2 2 EXTRA
3 3 no-extra
4 4 has-extra
5 4 EXTRA
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加