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
アイデアをいただければ幸いです。
美しい - ありがとうございました!私は "index = ts"を試しましたが、明らかにインデックスをリストとして渡す必要があることを慎重に読んでいませんでした:[ts] – Pman70
@ Pman70はい。この回答があなたを助けてくれたら(受け入れますか?)(https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work?answertab=votes#tab-top)。私はそれを感謝します!ハッピーコーディング! –
承認済み!私はこのフォーラムの完全な初心者ですので、私は一般的な練習をスピードアップするつもりはありません。私は特にあなたが私の例に直接ソリューションを挿入していただきありがとうございます。 – Pman70