次のデータフレームがあるとします。
item_a item_b
1 123
7 32
4 18
次に、定数「PERIODS = 3」があります。各繰り返しをカウンターとして追加しながら、上記のデータフレームを3回繰り返すにはどうすればよいですか。
望ましい結果は次のとおりです。
counter item_a item_b
1 1 123
1 7 32
1 4 18
2 1 123
2 7 32
2 4 18
3 1 123
3 7 32
3 4 18
これは別の方法です。これは、dfを必要な回数だけ連結し、連結ごとに徐々に増加する定数としてインデックスを設定します。
import numpy as np
period=3
new_df = pd.concat([df.set_index(np.repeat(i, len(df))) for i in range(1,period+1)])
>>> new_df
item_a item_b
1 1 123
1 7 32
1 4 18
2 1 123
2 7 32
2 4 18
3 1 123
3 7 32
3 4 18
# Or, to have counter as a separate column rather than the index:
new_df = pd.concat([df.assign(counter=np.repeat(i, len(df)))
for i in range(1,period+1)]).reset_index(drop=True)
解決策2
あなたのコメントから、あなたは迅速なコード実行を探しているので、この方法はより速いです:
new_df = pd.DataFrame(np.repeat([df.values],period, axis=0).reshape(-1,df.shape[1]),
index=np.repeat(range(1,period+1), len(df)), columns=df.columns)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加