2017-09-22 141 views
0

我試圖找到一種方法來從Python中的大數據框中讀取一個值。 我在我的項目中有2個數據表。如何從Python中的數據框中讀取單個值?

一個看起來是這樣的:

Company ID Company 201512 201511 ... 199402 199401 
1234  abc  1.1  0.8  ... 2.1  -0.9 
. 
. 
. 
4321  cba  2.1  -0.4 ... 0.3  -0.1 

有大約260個月,1家萬家企業。我需要逐一檢查他們的每月回報,並查看該數據點後面是否有36個有效數據點。這意味着沒有「0」或「NaN」。如果有36個有效數據點,則需要對這7個因子進行36個數據點的迴歸,這些因子列於另一個表中。

其他表看起來像這樣:

Month Factor1  Factor2  ...  Factor6  Factor7 
201512 -0.4  1.1   ...  2.1   1.2 
. 
. 
. 
199401 0.1   0.2   ...  0.3   0.4 

現在我的問題是,我無法找到一種方法同時從表1中加載只是一個值,併爲它創建一個循環。有人可以請指教嗎?

+0

爲什麼'0'不是有效的月度回報? – acushner

+0

那麼你可以使用'value = df ['some_field']。iloc [the_index]'但你可能不希望在'for'循環中有一種方法可以''group_by.aggregate()'採取具體的價值。 – roganjosh

+0

因爲0極有可能只是一個缺失的數據點或錯字。 –

回答

0

你不想爲此循環for循環。

假設0是一個有效的月度回報,你只有36列Company後有你可以很容易地找到所有的公司具有有效的月收益數據:

df = df[df.notnull().all(1)] 

如果由於一些未知的原因,你想獲得對於評論

df = df[df.replace(0, np.nan).notnull().all(1)] 

編輯:擺脫0 S,可以先做一個替代

你可以這樣做:

cols = df.columns 
first_col = get_first_return_col(df) 
for i in range(first_col, len(cols)): 
    df = df[df[cols[i : i + 36]].notnull().all(1)] 
    run_regression(df[cols[i]]) 
+1

謝謝你的回答。如果我只需要爲每家公司進行一次迴歸,這就會有所幫助,但實際上我需要爲每家公司運行多次迴歸。它是這樣的。我讀了公司abc的201512數據,在那之後我發現了36​​個有效數據,我運行了一個迴歸並記錄下了結果。然後我查看同一家公司的201511數據,看看是否還有36個月的有效數據點。如果是的話,我需要在這36個月內進行另一次迴歸,這與之前的迴歸只有一個月不同。 –

+0

查看更新的答案,也許會有所幫助。 – acushner

1

你可以用下面的代碼在行迭代:

for index, row in df.iterrows(): 

然後index將是行的索引,並且您可以訪問列有可以說row["Company"]爲例。

相關問題