1

いくつかの条件に基づいて大量のデータを操作しようとしています。1 つは同じ行に基づいており、もう 1 つは別の行のセルに基づいています。

たとえば、私はこのような df を持っています。

df['true'] = df.loc[:,['max','value']].min(axis=1)「true」列を追加するには

max    value   true
0,00    3,00    0,00
0,00    4,00    0,00
0,00    4,00    0,00
0,00    2,00    0,00
3,00    3,00    3,00
3,00    1,00    1,00
3,00    4,00    3,00
3,00    1,00    1,00
3,00    4,00    3,00
3,00    0,00    0,00

しかし、「最大」2行上のセルの値に基づいて、「true」列に条件を追加したいと思います。.loc のように、この条件のデータフレーム全体を次のようなものでチェックしたいと思います

df.loc[df['max'] - 2 = 0,'true'] = 0

パンダはクエリが非常に得意なので、データフレーム全体を反復処理する if ステートメントを書きたくありません。

この場合の出力は次のようになります。

max    value   true
0,00    3,00    0,00
0,00    4,00    0,00
0,00    4,00    0,00
0,00    2,00    0,00
3,00    3,00    **0,00**
3,00    1,00    **0,00**
3,00    4,00    3,00
3,00    1,00    1,00
3,00    4,00    3,00
3,00    0,00    0,00

助言がありますか?

ありがとうございました

Solution thx @EdChum = 
df.loc[df['max'].shift(+ 2) == 0,'true'] = 0
4

1 に答える 1

0

shiftパラメータが必要だと思いますperiods = 2

 df.loc[df['max'].shift(periods = 2) == 0,'true'] = 0
print df
   max  value  true
0    0      3     0
1    0      4     0
2    0      4     0
3    0      2     0
4    3      3     0
5    3      1     0
6    3      4     3
7    3      1     1
8    3      4     3
9    3      0     0
于 2016-02-11T15:37:53.450 に答える