回答編集履歴

1

pandasではなくndrrayを直接使っているので追加

2020/12/25 06:48

投稿

ppaul
ppaul

スコア24670

test CHANGED
@@ -16,9 +16,9 @@
16
16
 
17
17
  0 apple $5
18
18
 
19
- 1 banan $6
19
+ 1 banana $6
20
20
 
21
- 2 oragne $10
21
+ 2 orange $10
22
22
 
23
23
  >>> df['price'] = df['price'].apply(lambda x: int(x.strip('$')))
24
24
 
@@ -28,8 +28,74 @@
28
28
 
29
29
  0 apple 5
30
30
 
31
- 1 banan 6
31
+ 1 banana 6
32
32
 
33
- 2 oragne 10
33
+ 2 orange 10
34
34
 
35
35
  ```
36
+
37
+
38
+
39
+
40
+
41
+ pandasではなくnumpyのndarrayを直接使っているようですので、ndarray版を追加します。
42
+
43
+ 普通にndarrayを作ると、dtypeが'<U6'となり、整数を代入しようとしても文字列の変換されてしまいます。これを避けるためには作成時にdtypeとして'object'を指定するなどの方法をとる必要があります。
44
+
45
+
46
+
47
+ 名前が縦方向の場合
48
+
49
+ ```python
50
+
51
+ >>> import numpy as np
52
+
53
+ >>>
54
+
55
+ >>> fruit = np.array([['apple', '$5'], ['banana', '$6'], ['orange', '$10']])
56
+
57
+ >>> print(fruit)
58
+
59
+ [['apple' '$5']
60
+
61
+ ['banana' '$6']
62
+
63
+ ['orange' '$10']]
64
+
65
+ >>> fruit = np.array([[x[0], int(x[1].strip('$'))] for x in fruit], dtype='object')
66
+
67
+ >>> print(fruit)
68
+
69
+ [['apple' 5]
70
+
71
+ ['banana' 6]
72
+
73
+ ['orange' 10]]
74
+
75
+ ```
76
+
77
+ 名前が横方向の場合
78
+
79
+ ```python
80
+
81
+ >>> import numpy as np
82
+
83
+ >>>
84
+
85
+ >>> fruit = np.array([['apple', 'banana', 'orange'], ['$5', '$6', '$10']])
86
+
87
+ >>> print(fruit)
88
+
89
+ [['apple' 'banana' 'orange']
90
+
91
+ ['$5' '$6' '$10']]
92
+
93
+ >>> fruit = np.array([fruit[0], [int(x.strip('$')) for x in fruit[1]]], dtype = 'object')
94
+
95
+ >>> print(fruit)
96
+
97
+ [['apple' 'banana' 'orange']
98
+
99
+ [5 6 10]]
100
+
101
+ ```