前提・実現したいこと
テキストデータとして出力された動画内の動く人物の座標データを処理したいです。
それぞれの要素がobject型になっているのをfloat型に直して、さらに(x,y)のように行列表記をしたいです。
以下のようなデータが85行分あります。
0:517.5 669.5:person, 106.0 462.0:person, 396.0 362.5:person, 646.5 377.0:person,
1:516.5 666.0:person, 106.0 458.5:person, 386.5 362.5:person, 654.5 378.0:person, 36.5 459.5:person,
2:506.5 660.0:person, 107.0 454.0:person, 654.5 393.0:person, 386.5 369.0:person,
3:508.0 661.5:person, 106.0 452.5:person, 380.5 361.0:person, 653.0 394.0:person,
4:510.0 663.0:person, 106.5 454.0:person, 649.5 388.5:person, 380.5 364.0:person,
5:107.0 456.0:person, 650.5 390.5:person, 510.5 661.5:person, 383.0 365.5:person,
発生している問題・エラーメッセージ
ValueError Traceback (most recent call last) <ipython-input-5-5e185effa98f> in <module>() 18 data.E = data.E.str.split() 19 ---> 20 data = data.astype(np.float) 21 22 data 5 frames /usr/local/lib/python3.6/dist-packages/pandas/core/generic.py in astype(self, dtype, copy, errors, **kwargs) 5880 # else, only a single dtype is given 5881 new_data = self._data.astype( -> 5882 dtype=dtype, copy=copy, errors=errors, **kwargs 5883 ) 5884 return self._constructor(new_data).__finalize__(self) /usr/local/lib/python3.6/dist-packages/pandas/core/internals/managers.py in astype(self, dtype, **kwargs) 579 580 def astype(self, dtype, **kwargs): --> 581 return self.apply("astype", dtype=dtype, **kwargs) 582 583 def convert(self, **kwargs): /usr/local/lib/python3.6/dist-packages/pandas/core/internals/managers.py in apply(self, f, axes, filter, do_integrity_check, consolidate, **kwargs) 436 kwargs[k] = obj.reindex(b_items, axis=axis, copy=align_copy) 437 --> 438 applied = getattr(b, f)(**kwargs) 439 result_blocks = _extend_blocks(applied, result_blocks) 440 /usr/local/lib/python3.6/dist-packages/pandas/core/internals/blocks.py in astype(self, dtype, copy, errors, values, **kwargs) 557 558 def astype(self, dtype, copy=False, errors="raise", values=None, **kwargs): --> 559 return self._astype(dtype, copy=copy, errors=errors, values=values, **kwargs) 560 561 def _astype(self, dtype, copy=False, errors="raise", values=None, **kwargs): /usr/local/lib/python3.6/dist-packages/pandas/core/internals/blocks.py in _astype(self, dtype, copy, errors, values, **kwargs) 641 # _astype_nansafe works fine with 1-d only 642 vals1d = values.ravel() --> 643 values = astype_nansafe(vals1d, dtype, copy=True, **kwargs) 644 645 # TODO(extension) /usr/local/lib/python3.6/dist-packages/pandas/core/dtypes/cast.py in astype_nansafe(arr, dtype, copy, skipna) 727 if copy or is_object_dtype(arr) or is_object_dtype(dtype): 728 # Explicit copy, or required since NumPy can't view from / to object. --> 729 return arr.astype(dtype, copy=True) 730 731 return arr.view(dtype) ValueError: setting an array element with a sequence.
該当のソースコード
import pandas as pd import numpy as np data = pd.read_table('basket.data.txt',names=('A','B','C','D','E'),sep=',') data.A = data.A.str.replace('^[0-9]+:','') data.A = data.A.str.strip(':person') data.B = data.B.str.strip(':person') data.C = data.C.str.strip(':person') data.D = data.D.str.strip(':person') data.E = data.E.str.strip(':person') data.A = data.A.str.split() data.B = data.B.str.split() data.C = data.C.str.split() data.D = data.D.str.split() data.E = data.E.str.split() data = data.astype(np.float) data
ネットに記載されているものは一通りやってみたのですが、どれも自分ではうまくいきませんでした。
それができれば、最近傍法をつかって同一人物を判定してそれぞれの列に並び変えることに挑戦します。それに関してもヒントなどあれば教えていただきたいです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー