pythonでのpandasを用いたデータ処理において詰まっておりますので、ぜひ助けていただけると幸いです。
なにとぞよろしくお願いします。
###前提・実現したいこと
ある時間にid=0がどこにあるか(Area)を分類・収集するプログラムが、start endの形式でデータを出力するので、データ処理の行いやすい時系列のデータに変換したい。
元となるStart End形式のデータ(raw_data)を
id | start_time | end_time | Area 0 | 2017-09-29 00:00:00 | 2017-09-29 00:00:02 | A 0 | 2017-09-29 00:00:02 | 2017-09-29 00:00:04 | B
時系列に変換したい(02秒でダブりあり)
time | id | Area.A | Area.B 2017-09-29 00:00:00 | 0 | 1 | 0 2017-09-29 00:00:01 | 0 | 1 | 0 2017-09-29 00:00:02 | 0 | 1 | 1 2017-09-29 00:00:03 | 0 | 0 | 1 2017-09-29 00:00:04 | 0 | 0 | 1
###発生している問題・エラーメッセージ
下記メッセージが出て、処理が終了せず。
A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
###該当のソースコード
# --- 入力データの編集 ------ raw_data = pd.csv_read("必要なデータ.csv") # ダミー変数作成 raw_dummy = pd.get_dummies(copy_raw_data[['Area']]) # 結合 con_data = pd.concat([copy_raw_data,raw_dummy],axis=1) con_data.reset_index(inplace=True) # increment変数のため # --- DatetimeIndexを用意して、新しいDataFrameを作成 dti = pd.date_range(start=min(raw_data['start_time']), end=max(raw_data['end_time']), freq='S') df_freq = DataFrame(index=dti, columns=raw_dummy.columns) df_freq['id'] = NA df_freq.rename(columns={'index': 'time'}, inplace=True) # --- 以下、問題を抱えている部分------- for i in con_data['index']: t_range = pd.date_range(start=con_data['start_time'][i], end=con_data['end_time'][i],freq='S') for t in t_range: for c in raw_dummy.columns: df_freq[c][t] += con_data[c][i] df_freq.head()
###試したこと
DataFrameのapplyを使う、for文を成型するなどしましたが、うまくいっていません。
###補足情報(言語/FW/ツール等のバージョンなど)
python3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/17 01:27
2017/11/17 05:16 編集