2015-01-05 46 views
1

我是熊貓新手,我正在努力應該很容易。如何分配數據幀?

我想定義一個腳本,用於「收集」一些數據並將其存儲在df中,當滿足某些條件時稱爲repes。

這是代碼:

repes=pd.DataFrame() 
for a in df: 
    if a.field== 

def rarea(x): 
    proximo=df[(df.lat>float(x.lat)-0.001)&(df.lat<float(x.lat)+0.001)] 
    if len(proximo)==1: 
     p2 = proximo.coordenadas 
     return len(proximo) 
    elif len(proximo)==2: 
     repes=repes.append(proximo) 
     return len(proximo) 
resultado=pd.Series([rarea(robser.iloc[cnt]) for cnt in range (0,len(robser))])` 

我得到以下錯誤「局部變量‘repes’賦值之前引用」。

如何初始化repes數據幀?爲什麼不足以使用repes = pd.DataFrame()?我失蹤了嗎?

謝謝

回答

2

Python的「假設」,我們希望有一個local變量由於分配repesrarea(x)裏面,所以第一assignment語句拋出此錯誤消息。如果它沒有被聲明爲全局變量,則在函數內部更改或創建的任何變量都是本地的。要告訴Python,我們要使用全局變量,我們必須使用關鍵字「global」

repes是一個全局變量。你必須聲明它是全球性的使用它。

def rarea(x): 
    global repes # add this line 
    proximo=df[(df.lat>float(x.lat)-0.001)&(df.lat<float(x.lat)+0.001)] 

Read更多關於全局和局部變量

+0

它的工作原理!非常感謝。 我有一個很大的誤解,並認爲在Python中一切(變量和函數)是全球性的。它非常明確。再次感謝你。 – joaquintopiso