パンダでは、列内の特定の値を持つすべての行を複製して、複製内のその列の値を変更するにはどうすればよいですか?

MarkD

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 indexingDataFrame.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]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ