回答編集履歴
2
全角数字の元データに対応
test
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
`pd.to_datetime`でdatetime64[ns]型に変換し、年月日を取り出してデータフレームに追加する。
|
2
2
|
|
3
3
|
|
4
|
+
|
5
|
+
補足: 元データが質問時の書き間違い(よくある)ではなく、実際に全角数字で書かれていることが判明したので、それを半角数字に変換するコードを追加。
|
4
6
|
|
5
7
|
|
6
8
|
|
@@ -16,9 +18,9 @@
|
|
16
18
|
|
17
19
|
日付
|
18
20
|
|
19
|
-
|
21
|
+
2020年3月10日
|
20
22
|
|
21
|
-
|
23
|
+
2020年3月11日
|
22
24
|
|
23
25
|
"""
|
24
26
|
|
@@ -36,9 +38,9 @@
|
|
36
38
|
|
37
39
|
|
38
40
|
|
39
|
-
# 日付列の文字列をdatetime64[ns]型に変換する
|
41
|
+
# 日付列の文字列中の全角数字を半角数字に変換後、datetime64[ns]型に変換する
|
40
42
|
|
41
|
-
df['日付'] = pd.to_datetime(df['日付'], format='%Y年%m月%d日')
|
43
|
+
df['日付'] = pd.to_datetime(df['日付'].map(lambda x: x.translate(x.maketrans("0123456789", "0123456789"))), format='%Y年%m月%d日')
|
42
44
|
|
43
45
|
|
44
46
|
|
@@ -66,11 +68,11 @@
|
|
66
68
|
|
67
69
|
```result
|
68
70
|
|
69
|
-
日付
|
71
|
+
日付
|
70
72
|
|
71
|
-
0
|
73
|
+
0 2020年3月10日
|
72
74
|
|
73
|
-
1
|
75
|
+
1 2020年3月11日
|
74
76
|
|
75
77
|
年 月 日
|
76
78
|
|
1
補足を追加
test
CHANGED
@@ -24,6 +24,8 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
+
# 日本語の出力を固定幅フォントで揃える設定
|
28
|
+
|
27
29
|
pd.set_option('display.unicode.east_asian_width', True)
|
28
30
|
|
29
31
|
|
@@ -34,9 +36,13 @@
|
|
34
36
|
|
35
37
|
|
36
38
|
|
39
|
+
# 日付列の文字列をdatetime64[ns]型に変換する
|
40
|
+
|
37
41
|
df['日付'] = pd.to_datetime(df['日付'], format='%Y年%m月%d日')
|
38
42
|
|
39
43
|
|
44
|
+
|
45
|
+
# dtアクセサーを使って年月日を取得し、新たな列を追加
|
40
46
|
|
41
47
|
df['年'] = df['日付'].dt.year
|
42
48
|
|
@@ -46,6 +52,8 @@
|
|
46
52
|
|
47
53
|
|
48
54
|
|
55
|
+
# 日付列を削除
|
56
|
+
|
49
57
|
df.drop(columns='日付', inplace=True)
|
50
58
|
|
51
59
|
|
@@ -53,3 +61,21 @@
|
|
53
61
|
print(df)
|
54
62
|
|
55
63
|
```
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
```result
|
68
|
+
|
69
|
+
日付
|
70
|
+
|
71
|
+
0 2020年3月10日
|
72
|
+
|
73
|
+
1 2020年3月11日
|
74
|
+
|
75
|
+
年 月 日
|
76
|
+
|
77
|
+
0 2020 3 10
|
78
|
+
|
79
|
+
1 2020 3 11
|
80
|
+
|
81
|
+
```
|