回答編集履歴
1
NaNに対応
answer
CHANGED
@@ -27,20 +27,29 @@
|
|
27
27
|
<class 'str'>
|
28
28
|
"""
|
29
29
|
|
30
|
-
data = data.applymap(lambda x: tuple(np.array(x).astype(np.float)))
|
30
|
+
data = data.applymap(lambda x: tuple(np.array(x).astype(np.float)) if np.array(x).ndim != 0 else x)
|
31
31
|
print(data)
|
32
32
|
"""
|
33
33
|
A B C D E
|
34
|
-
0 (517.5, 669.5) (106.0, 462.0) (396.0, 362.5) (646.5, 377.0)
|
34
|
+
0 (517.5, 669.5) (106.0, 462.0) (396.0, 362.5) (646.5, 377.0) NaN
|
35
35
|
1 (516.5, 666.0) (106.0, 458.5) (386.5, 362.5) (654.5, 378.0) (36.5, 459.5)
|
36
|
-
2 (506.5, 660.0) (107.0, 454.0) (654.5, 393.0) (386.5, 369.0)
|
36
|
+
2 (506.5, 660.0) (107.0, 454.0) (654.5, 393.0) (386.5, 369.0) NaN
|
37
|
-
3 (508.0, 661.5) (106.0, 452.5) (380.5, 361.0) (653.0, 394.0)
|
37
|
+
3 (508.0, 661.5) (106.0, 452.5) (380.5, 361.0) (653.0, 394.0) NaN
|
38
|
-
4 (510.0, 663.0) (106.5, 454.0) (649.5, 388.5) (380.5, 364.0)
|
38
|
+
4 (510.0, 663.0) (106.5, 454.0) (649.5, 388.5) (380.5, 364.0) NaN
|
39
|
-
5 (107.0, 456.0) (650.5, 390.5) (510.5, 661.5) (383.0, 365.5)
|
39
|
+
5 (107.0, 456.0) (650.5, 390.5) (510.5, 661.5) (383.0, 365.5) NaN
|
40
40
|
"""
|
41
41
|
|
42
|
+
|
42
43
|
print(type(data.loc[0, 'A'][0]))
|
43
44
|
"""
|
44
45
|
<class 'numpy.float64'>
|
45
46
|
"""
|
46
|
-
```
|
47
|
+
```
|
48
|
+
---
|
49
|
+
私の当初環境ではE列にスペースが入っていたため、NaNが混入していなかったみたいです。
|
50
|
+
|
51
|
+
スペースを消してNaNを混入した状態に対応してみました。
|
52
|
+
|
53
|
+
データが入っていれば`data.?.str.split()`によって1次元配列ができています。
|
54
|
+
NaNの場合は1次元配列にならずそのままデータが残ります。
|
55
|
+
それを`np.array(x).ndim != 0`で見分けます。NaNを別の値にしたい場合は最後のxを別の式に置き換えてください。
|