2017-01-30 9 views
0

パンダのデータフレームの疎行列では、値が1の値を1行シフトさせて更新したい。パンダの1行をシフトして値を更新する

from 
    0 1 2 
0 0 1 1 
1 1 1 0 
2 0 0 0 
3 0 0 1 
4 0 0 0 
5 1 1 0 

to 
    0 1 2 
0 0 1 1 
1 1 1 1 
2 1 1 0 
3 0 0 1 
4 0 0 1 
5 1 1 0 

私は特定の場所での更新値が、私はそれがレコードの膨大な数を持っているので、文のために使用したくないtable[table==1] = 1

で与えられることを理解しています。

+1

あなたの例では、あなたの説明と矛盾する:あなたがいない1つの、0を更新するように見えます。また、 'table [table == 1] = 1'はまったく何もしていません。 – DyZ

+0

はい、table [table == 1] = 1は基本的には何もありません。同じ場所で1を1に置き換えます。私はそれが1を次の行にシフトできるかどうか疑問に思いました。その他の0は保護されています。 – Lcy

答えて

0

私はこれが動作する必要がありますね:

newdf = df.shift().fillna(0).astype(int) | df 
# 0 1 2 
#0 0 1 1 
#1 1 1 1 
#2 1 1 0 
#3 0 0 1 
#4 0 0 1 
#5 1 1 0 
+0

この回答は正しくありませんIMO彼の例では、前の行の同じインデックス位置の要素が1の場合、0を1に置き換えました。 – satnam

+0

@satnamそれは私の提案された解決策とまったく同じです。 – DyZ

+0

前の行が1のときは0を1に置き換えます。 – Lcy

関連する問題