2017-07-26 9 views
1

DataFrameの空白を作成したい場合は、他の1行のDataFrameに新しいデータを追加します。私は効率的な追加のためにパンダの "Setting With Enlargement"を使用しようとしています。今拡大で設定:別のDataFrameに1行のDataFrameを追加する方法

import numpy as np 
import pandas as pd 
from datetime import datetime 
from pandas import DataFrame 

df = DataFrame(columns=["open","high","low","close","volume","open_interest"]) 

row_one = DataFrame({"open":10,"high":11,"low":9,"close":10,"volume":100,"open_interest":np.NAN}, index = [datetime(2017,1,1)]) 
row_two = DataFrame({"open":9,"high":12,"low":8,"close":10.50,"volume":500,"open_interest":np.NAN}, index = [datetime(2017,1,2)]) 

、私は拡大のルールと設定次の新しい行を追加しよう:

"DatetimeIndex(['2017-01-01'], dtype='datetime64[ns]', freq=None) not in index" 

私は、行を自動的にする必要があります考えた:

df[row_one.index] = row_one.columns 

が、私はこのエラーを取得しますDataFrameには含まれていないため追加されました。私は間違って何をしていますか?

+1

あなたは '.loc':' df.loc [row_one.index] 'を使う必要があります。 – IanS

+0

列または行を追加しようとしていますか? – ayhan

+0

常に同じ列を持ち、インデックスとして異なる日時を持つ行を追加しようとしています –

答えて

0

あなたはilocを経由して選択することで、シリーズにスカラーと最後の「変換」row_oneため[0]index値を選択し、拡大によって設定するためのlocが必要になります。

df.loc[row_one.index[0]] = row_one.iloc[0] 
print (df) 
      open high low close volume open_interest 
2017-01-01 10.0 11.0 9.0 10.0 100.0   NaN 

しかし、より良いが、特に、複数のdf場合、concatを使用していますs:

df = pd.concat([row_one, row_two]) 
+0

は、拡大による設定よりも効率的ですか? –

+0

複数のデータフレームを必要とする場合は、より良いものが「連結」です。 – jezrael

+1

私はイベントから新しいデータを取得するので、毎回1行のデータフレームを追加するだけです。タイムループを使用すると、1000ループ、最高3ループ:511μsループごとに拡大と1000ループ、3 :concatのループごとに1.29msなので、locを使った設定はpd.concatよりも実際に速いようです。 –

関連する問題