2017-09-22 5 views
0

私はPythonの大きなデータフレームから1つの値を読み取る方法を見つけようとしています。 私のプロジェクトには2つのデータテーブルがあります。Pythonでdataframeから単一の値を読み取るにはどうすればよいですか?

一つは、次のようになります。

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ヶ月10,000企業があります。毎月の返品を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]'を使うことはできますが、何らかの方法で 'group_by.aggregate()'への道があれば 'for'ループに入れたくないかもしれません。特定の値をとる。 – 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秒を取り除くには、最初に置き換えるを行うことができますあなたは、次のコードを持つ行を反復処理することができます

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

ありがとうございました。これは、企業ごとに1つの回帰が必要な場合に役立ちますが、実際には各社ごとに複数の回帰を実行する必要があります。こんなふうになります。私は会社abcの201512のデータを読んで、その時点以降36個の有効なデータが見つかりました。回帰を実行して結果を確認しました。次に、同じ会社の201511データをチェックして、有効な36ヶ月のデータポイントがまだあるかどうかを確認します。はいの場合、私はこれらの36ヶ月間に別の回帰を実行する必要があります。これは、前の回帰とわずか1ヶ月です。 –

+0

更新された回答をチェックしてください。 – acushner

1

:ような何かができ

for index, row in df.iterrows(): 

を次にindexは、行のインデックスとなり、そしてあなたが列にアクセスすることができますためrow["Company"]を言うことができます例。

関連する問題