回答編集履歴

3

2022/12/20 12:07

投稿

melian
melian

スコア19754

test CHANGED
@@ -12,6 +12,6 @@
12
12
  '15JST', '16JST', '17JST', '18JST', '19JST',
13
13
  '20JST', '21JST', '22JST', '23JST']
14
14
 
15
- df1 = df1[x].apply(pd.to_numeric, errors='coerce')
15
+ df1[x] = df1[x].apply(pd.to_numeric, errors='coerce')
16
16
  print(df1)
17
17
  ```

2

2022/12/20 11:46

投稿

melian
melian

スコア19754

test CHANGED
@@ -1,30 +1,17 @@
1
+ > `ValueError: could not convert string to float: '00JST'`
2
+
3
+ 以下、`pandas.to_numeric()` を利用して `float` 型に変換しますが、数値に変換できない文字列は `NA` に置き換えられます。
4
+
1
5
  ```python
2
6
  import pandas as pd
3
7
 
8
+ df1 = pd.read_csv('2017.csv', dtype = object)
4
9
  x = ['00JST', '01JST', '02JST', '03JST', '04JST',
5
10
  '05JST', '06JST', '07JST', '08JST', '09JST',
6
11
  '10JST', '11JST', '12JST', '13JST', '14JST',
7
12
  '15JST', '16JST', '17JST', '18JST', '19JST',
8
13
  '20JST', '21JST', '22JST', '23JST']
9
- df1 = pd.DataFrame({'x': x})
10
14
 
11
- df1['x'] = df1['x'].replace('JST', '', regex=True).astype(float)
15
+ df1 = df1[x].apply(pd.to_numeric, errors='coerce')
12
16
  print(df1)
13
-
14
- # x
15
- # 0 0.0
16
- # 1 1.0
17
- # 2 2.0
18
- # 3 3.0
19
- # 4 4.0
20
- # 5 5.0
21
- # :
22
- # :
23
17
  ```
24
-
25
- `x`列の全ての要素(文字列)が「先頭2文字のみ数字」ということであれば以下でも変換可能です。
26
- ```python
27
- df1['x'] = df1['x'].str[:2].astype(float)
28
- ```
29
- ```
30
-

1

2022/12/20 10:29

投稿

melian
melian

スコア19754

test CHANGED
@@ -22,3 +22,9 @@
22
22
  # :
23
23
  ```
24
24
 
25
+ `x`列の全ての要素(文字列)が「先頭2文字のみ数字」ということであれば以下でも変換可能です。
26
+ ```python
27
+ df1['x'] = df1['x'].str[:2].astype(float)
28
+ ```
29
+ ```
30
+