'factor'という列があり、その列の名前が変わるたびに、空白行を挿入したいのですが、これは可能ですか?
for i in range(0, end):
if df2.at[i + 1, 'factor'] != df2.at[i, 'factor']:
手動で行をfor
ループに順番に挿入するのは非効率的です。別の方法として、変更が発生するインデックスを見つけ、新しいデータフレームを作成し、連結してから、インデックスで並べ替えることができます。
df = pd.DataFrame([[1, 1], [2, 1], [3, 2], [4, 2],
[5, 2], [6, 3]], columns=['A', 'B'])
switches = df['B'].ne(df['B'].shift(-1))
idx = switches[switches].index
df_new = pd.DataFrame(index=idx + 0.5)
df = pd.concat([df, df_new]).sort_index()
print(df)
A B
0.0 1.0 1.0
1.0 2.0 1.0
1.5 NaN NaN
2.0 3.0 2.0
3.0 4.0 2.0
4.0 5.0 2.0
4.5 NaN NaN
5.0 6.0 3.0
5.5 NaN NaN
必要に応じて、を使用reset_index
してインデックスを正規化できます。
print(df.reset_index(drop=True))
A B
0 1.0 1.0
1 2.0 1.0
2 NaN NaN
3 3.0 2.0
4 4.0 2.0
5 5.0 2.0
6 NaN NaN
7 6.0 3.0
8 NaN NaN
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加