2017-11-30 11 views
0

を更新していない、私はこのコードを持っている:グローバルデータフレームのpython

latitude = pd.DataFrame() 
longitude = pd.DataFrame() 

datasets = [] 

datasets.append(latitude) 
datasets.append(longitude) 

def fun(key, job): 
    global latitude 
    global longitude 

    if(key == 'LAT'): 
     latitude = job.copy() 
    elif(key == 'LON'): 
     longitude = job.copy() 

for d in datasets: 
    print(d.shape) 

これに続いて:Why does assigning to my global variables not work in Python?私は変数が正しく参照されていることを確認するために、グローバルなキーワードを使用していました。ただし、値は更新されません。何かアドバイス?私はすでにifステートメントが正しいと確信しています。

OUTPUT:また

(0, 0) 
(0, 0) 

、私はスパイダーを使用していますが、私はリストが空のデータフレームが含まれていることを見ることができ、また、グローバル変数が空です。

+0

どのように値が更新されていないことを確認しましたか?あなたの値の出力を追加してください – ddor254

+0

質問を編集しました、ありがとうございます。 @ ddor254 –

答えて

1

o.kは、あなたが持っている問題は、あなたがあなたのプログラムがdatasets.append(latitude)でいくつかの値を指すように作り、あなたがglobal latitudelatitude = job.copy()を変更するとき、あなたはグローバル変数の値ではなく、あなたのリストdatasetsの1を変更することです。

変更された値を表示したい場合は、latitudeが出力され、値が変更されていることがわかります。ループ内の緯度の値をdatasets[0]に変更してください。

+0

これは、リスト内の変数が実際のグローバル変数への参照であるべきか、問題を解決しますか? @ ddor254 –

+0

あなたが指しているものを変更しているグローバル変数の値を変更するとき。リスト内の参照は "古い"グローバル変数を指していますが、このグローバル変数に値を割り当てると、リスト上で更新されない他のアドレスを指すようになります。 – ddor254