2016-07-19 8 views
-1

いくつかの行には値がありません。前の行の値を使用したいと思います。次のようなもの:python - if文で値を設定する

for index, item in enumerate(df4.Settle): 
    if (item == 'No value'): 
     item = item[index-1] #<--I want to do this 

どうすればいいですか?

+0

あなたのコードが動作するかしませんか? – linusg

+0

あなたはちょうどいくつかのコードを掲示して「私は次のことをしています...それをどうやってするのですか?」と言っていますか? – linusg

+3

'item [index-1]'を 'df4.Settle [index-1]'で置き換える必要がありますが、行内に ''値なし ''が2回ある場合は動作しません。 – S4M

答えて

0

私はあなたがしたいことを正確に理解していません。

>>> lst = [[1,2,3], 'No value', [0,0,0]] 
>>> for index, item in enumerate(lst): 
... if item == 'No value': 
...  lst[index] = lst[index-1] 
... 
>>> lst 
[[1, 2, 3], [1, 2, 3], [0, 0, 0]] 
0

これは3行目の単純なエラーです。あなたのコードではなく

for index, item in enumerate(df4.Settle): 
    if (item == 'No value'): 
    item = df4.Settle[index-1] 

はもともとあなたが今、あなたがデータテーブルから値を取ることになるのに対し、単語「いいえ値」から文字を取っていたお読みください。あなたの最初の値が "値なし"であれば、これはエラーを引き起こすことを指摘しておきます。

+2

これは新しい変数に項目を割り当てているのに実際にはその項目をリストの一部にしていないので機能しません:) – joaquinlpereyra

+0

@joaquinlpereyra OPはリストを変更したいとは決して言いませんでした。 –

+1

'私はいくつかの行に値がないチャートを持っています。前の行の値を取って欲しいです。 '私はそれが行からなるグラフを参照しなければならないと仮定します。 – joaquinlpereyra

0

pythonで空の値を表すために、その唯一のインスタンスNoneで特別NoneTypeをあります:

>> item == 'no value' # that's your condition 
>> item[index-1] in 'no value' # item[index-1] in 'no value' 
True       # will be true for any valid int 

は、しかし、私はあなたがこのような何かをしたいと思うので、あなたが提供されているサンプルは、あまり意味がありません。 の表 thingyのそれぞれの値で何をしたいのかは不明です。 だからあなたの代わりにあなたの文字列'No value'Noneを使用してそれらを反復処理したいと仮定すると:

def yield_or_previous(iterable): 
    last_item = None 

    for item in iterable: 

     if item is not None: 
      last_item = item 
      yield item 
     else: 
      if last_item is not None: 
       yield last_item 
      else: 
       # TODO: What shall be done if first item is None? 
       # Raise an exception? 
       #raise ValueError('First item must not be none') 
       # or pass? 
       pass 

# Call it 
for item in yield_or_previous(df4.Settle): 
    # Do whatever 
    print(item)