いくつかの行には値がありません。前の行の値を使用したいと思います。次のようなもの:python - if文で値を設定する
for index, item in enumerate(df4.Settle):
if (item == 'No value'):
item = item[index-1] #<--I want to do this
どうすればいいですか?
いくつかの行には値がありません。前の行の値を使用したいと思います。次のようなもの:python - if文で値を設定する
for index, item in enumerate(df4.Settle):
if (item == 'No value'):
item = item[index-1] #<--I want to do this
どうすればいいですか?
私はあなたがしたいことを正確に理解していません。
>>> 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]]
これは3行目の単純なエラーです。あなたのコードではなく
for index, item in enumerate(df4.Settle):
if (item == 'No value'):
item = df4.Settle[index-1]
はもともとあなたが今、あなたがデータテーブルから値を取ることになるのに対し、単語「いいえ値」から文字を取っていたお読みください。あなたの最初の値が "値なし"であれば、これはエラーを引き起こすことを指摘しておきます。
これは新しい変数に項目を割り当てているのに実際にはその項目をリストの一部にしていないので機能しません:) – joaquinlpereyra
@joaquinlpereyra OPはリストを変更したいとは決して言いませんでした。 –
'私はいくつかの行に値がないチャートを持っています。前の行の値を取って欲しいです。 '私はそれが行からなるグラフを参照しなければならないと仮定します。 – joaquinlpereyra
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)
あなたのコードが動作するかしませんか? – linusg
あなたはちょうどいくつかのコードを掲示して「私は次のことをしています...それをどうやってするのですか?」と言っていますか? – linusg
'item [index-1]'を 'df4.Settle [index-1]'で置き換える必要がありますが、行内に ''値なし ''が2回ある場合は動作しません。 – S4M