いくつかの異なる期間にわたって評価したい車両情報があり、情報を移動しながら DataFrame のさまざまな列を変更しています。私は現在と以前の期間で作業しているので、2 つを連結して一緒に作業する必要があります。
私が抱えている問題は、「時間」列をパンダのインデックスとして使用し、返されるオブジェクトが期間内の車両 (または行) の数に応じてデータフレームまたはシリーズのいずれかであるデータをループするときです。 . Series オブジェクトで DataFrame メソッドを使用しようとすると、このオブジェクト タイプの変更によりエラーが発生します。
私がやろうとしていることと受け取ったエラーを示す小さなサンプル プログラムを作成しました。これはサンプルであり、実際のコードではないことに注意してください。インデックスを使用する代わりに、期間ごとにデータを簡単にクエリしようとしましたが、それは機能しますが、必要なことには遅すぎます。
import pandas as pd
df = pd.DataFrame({
'id' : range(44, 51),
'time' : [99,99,97,97,96,96,100],
'spd' : [13,22,32,41,42,53,34],
})
df = df.set_index(['time'], drop = False)
st = True
for ind in df.index.unique():
data = df.ix[ind]
print data
if st:
old_data = data
st = False
else:
c = pd.concat([data, old_data])
#do some work here
出力は次のとおりです。
id spd time
time
99 44 13 99
99 45 22 99
id spd time
time
97 46 32 97
97 47 41 97
id spd time
time
96 48 42 96
96 49 53 96
id 50
spd 34
time 100
Name: 100, dtype: int64
Traceback (most recent call last):
File "C:/Users/m28050/Documents/Projects/fhwa/tca/v_2/code/pandas_ind.py", line 24, in <module>
c = pd.concat([data, old_data])
File "C:\Python27\lib\site-packages\pandas\tools\merge.py", line 873, in concat
return op.get_result()
File "C:\Python27\lib\site-packages\pandas\tools\merge.py", line 946, in get_result
new_data = com._concat_compat([x.values for x in self.objs])
File "C:\Python27\lib\site-packages\pandas\core\common.py", line 1737, in _concat_compat
return np.concatenate(to_concat, axis=axis)
ValueError: all the input arrays must have same number of dimensions
誰かが DataFrame をループして列を更新する正しい方法を持っているか、使用する別の方法を指摘できるなら、それは素晴らしいことです。
ご協力いただきありがとうございます。
ジム