2017-11-14 11 views
1

私はPandasデータフレームに新しい行を動的に追加しようとしています。インデックスはタイムスタンプであり、インデックスを乱すことなく新しい行を挿入する方法を理解できません。コードの最初の部分は、データフレームを作成する:タイムスタンプインデックス付きのデータフレームへの行追加

data = {'time_stamp': ['2014-05-01 18:47:05.069', '2014-05-01 18:47:05.119', '2014-05-02 18:47:05.230',], 
     'col_a': [34, 25, 26], 
     'col_b' : [21,32,43]} 
df = pd.DataFrame(data, columns = ['time_stamp', 'col_a', 'col_b']) 
df['time_stamp'] = pd.to_datetime(df['time_stamp'], format="%Y-%m-%d %H:%M:%S.%f") 
df.index = df['time_stamp'] # Make time_stamp the index 
del df['time_stamp']  # Drop the initial time_stamp column 
print df 

結果:

#Insert new row (corresponding to an incoming update message with a time stamp an a new value on col_a 
ts = pd.to_datetime("2014-05-04 18:47:05.487", format="%Y-%m-%d %H:%M:%S.%f") 
new_row = pd.DataFrame([[11]], columns = ["col_a"]) 
df = pd.concat([df, pd.DataFrame(new_row)], ignore_index=False) 
print df 

結果:

連結(追記と同じ問題)と行を追加しようと

       col_a col_b 
time_stamp       
2014-05-01 18:47:05.069  34  21 
2014-05-01 18:47:05.119  25  32 
2014-05-02 18:47:05.230  26  43 

      col_a col_b 
2014-05-01 18:47:05.069000  34 21.0 
2014-05-01 18:47:05.119000  25 32.0 
2014-05-02 18:47:05.230000  26 43.0 
0        11 NaN 

「new_row "time_frame"という列とそれに対応するタイムスタンプで、新しい値をインデックス列に挿入するのではなく、 "time_stamp"という新しい列を作成します。

      col_a col_b    time_stamp 
2014-05-01 18:47:05.069000  34 21.0      NaT 
2014-05-01 18:47:05.119000  25 32.0      NaT 
2014-05-02 18:47:05.230000  26 43.0      NaT 
0        11 NaN 2014-05-04 18:47:05.487 

アイデアをいただければ幸いです。

答えて

0

indexパラメータをpd.DataFrame構造で使用してみましょう。

ts = pd.to_datetime("2014-05-04 18:47:05.487", format="%Y-%m-%d %H:%M:%S.%f") 
new_row = pd.DataFrame([[11]], columns = ["col_a"], index=[ts]) 
df1 = pd.concat([df, pd.DataFrame(new_row)], ignore_index=False) 
print(df1) 

出力:

     col_a col_b 
2014-05-01 18:47:05.069  34 21.0 
2014-05-01 18:47:05.119  25 32.0 
2014-05-02 18:47:05.230  26 43.0 
2014-05-04 18:47:05.487  11 NaN 
+0

美しい - ありがとうございました!私は "index = ts"を試しましたが、明らかにインデックスをリストとして渡す必要があることを慎重に読んでいませんでした:[ts] – Pman70

+0

@ Pman70はい。この回答があなたを助けてくれたら(受け入れますか?)(https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work?answertab=votes#tab-top)。私はそれを感謝します!ハッピーコーディング! –

+1

承認済み!私はこのフォーラムの完全な初心者ですので、私は一般的な練習をスピードアップするつもりはありません。私は特にあなたが私の例に直接ソリューションを挿入していただきありがとうございます。 – Pman70

関連する問題