python / pandasを使用して、いくつかの列に基づいて行間の差を計算したいと思います。小さな例を使ってもっとよく説明できると思います。だから、私は次のデータを持っています:
Number of rows A B
1 4 NaN
2 2 NaN
3 2 1
4 3 NaN
5 2 NaN
そして、私は次のデータを取得したいと思います:
Number of rows A B C
3 2 1 2
それで、私がここで何をしたかを説明しましょう。まず、値が1である列Bの行を識別する必要があります(行番号3の値は1です)。次に、この行の前後の2行(行番号3)の違いを見つけて、結果を列Cとして表示する必要があります。この例では、行番号3の前の2行は、行番号1と次の2行です。行番号3は行番号5です。列Aの行番号1と行番号5の値の差は2(4-2 = 2)です(最後に、行は列の値のみを持つようにしますC-これは簡単な作業であり、私はその中で助けを必要としません)。説明できればと思います。よろしくお願いします。
1つの解決策は、インデックスを取得して使用しi-2
、i+2
i = df.loc[df.B.eq(1)].index.tolist()
j = [(i_-2,i_+2) for i_ in i ]
df.loc[df.B.eq(1), 'C'] = [df.A.iloc[a] - df.A.iloc[b] for (a,b) in j]
n A B C
0 1 4 NaN NaN
1 2 2 NaN NaN
2 3 2 1.0 2.0
3 4 3 NaN NaN
4 5 2 NaN NaN
または、コースをもう一度スライスb=1
して、期待どおりの出力を得ることができます
df[df.B.eq(1)]
n A B C
2 3 2 1.0 2.0
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加