2016-04-18 38 views
1

私はpythonモジュールtushareからいくつかのデータを要求したいと思います。 このコードを使用すると、毎回データ行を取得できます。 しかし私はサーバーに5秒ごとのような要求を送信し、 と4時間以内にすべてのデータを1つのExcelファイルに入れたいと思います。 パンダはすでにtushareで作られています。 データをまとめて1つのエクセルファイルのみを生成するにはどうすればいいですか?pandasを使って既存のExcelファイルにデータを書き込む方法は?

import tushare as ts 
    df=ts.get_realtime_quotes('000875') 

    df.to_excel(r'C:\Users\stockfile\000875.xlsx') 

答えて

0

あなたが呼び出しの数を考えると例えば

df = df.append(ts.get_realtime_quotes('000875')) 

でそれを行うことができ、データフレームを作成する方がよいいや、彼らが到着したデータ行でそれを埋めます。このような何か:それを行うには

# Here, just getting column names: 
columns = ts.get_realtime_quotes('000875').columns 
# Choose the right number of calls, N, 
df = pd.DataFrame(index = range(N), columns = columns) 
for i in range(N): 
    df.iloc[0] = ts.get_realtime_quotes('000875').iloc[0] 
    sleep(5) 

別の方法(おそらく単純で空のデータフレームを事前に割り当てることなく、)リストにtushareから回答を格納し、その後pd.concatを適用することになります。

list_of_dfs = [] 
for _ in range(N): 
    list_of_dfs.append(ts.get_realtime_quotes('000875')) 
    sleep(5) 
full_df = pd.concat(list_of_dfs) 

事前にリクエスト数を知っている必要はありません。この方法で(例えば、あなたが繰り返しの明示的な番号のないforループを記述することにした場合)。

+0

ご返信ありがとうございます。私は愚かな質問をするかもしれません。あなたはコールの数によって何を意味しますか? – Qing

+0

これは毎回1行のデータを返し、この行には34列が含まれています – Qing

+0

@ Qing 4時間5秒ごとにリクエストを送信する場合、N = 4 * 60 * 60/5リクエストまたは呼び出し)。そのため、コードはまずそのサイズのデータ​​フレームを事前に割り当ててから、行を埋めます。 – ptrj

関連する問題