回答編集履歴

1

NaTに対応

2018/11/27 03:13

投稿

can110
can110

スコア38266

test CHANGED
@@ -24,11 +24,13 @@
24
24
 
25
25
 
26
26
 
27
- # datetime型awareでJSTなテストデータ
27
+ # 日時はJSTなテストデータ
28
28
 
29
29
  import pandas as pd
30
30
 
31
+ import numpy as np
32
+
31
- df = pd.DataFrame({'dt':[datetime(2018,11,27,12,tzinfo=JST)],'val':[1]})
33
+ df = pd.DataFrame({'dt':[datetime(2018,11,27,12,tzinfo=JST),np.NaN],'val':[1,2]})
32
34
 
33
35
  print(df)
34
36
 
@@ -38,9 +40,9 @@
38
40
 
39
41
  0 2018-11-27 12:00:00+09:00 1
40
42
 
43
+ 1 NaT 2
44
+
41
45
  """
42
-
43
- #print(df.info())
44
46
 
45
47
 
46
48
 
@@ -48,9 +50,17 @@
48
50
 
49
51
  def toNative(row):
50
52
 
51
- #row['dt'] = row['dt'].astimezone(UTC) # JST->UTCに変換して出力する
53
+ if not pd.isnull(row['dt']): # 有効
52
54
 
55
+ #row['dt'] = row['dt'].astimezone(UTC) # JST->UTCに変換して出力するなら
56
+
53
- row['dt'] = row['dt'].replace(tzinfo=None)
57
+ row['dt'] = row['dt'].replace(tzinfo=None)
58
+
59
+ else:
60
+
61
+ row['dt'] = datetime(2000,1,1) # とりあえず意味のある値にしたいなら
62
+
63
+ pass
54
64
 
55
65
  return row
56
66
 
@@ -66,6 +76,14 @@
66
76
 
67
77
  0 2018-11-27 12:00:00 1
68
78
 
79
+ 1 2000-01-01 00:00:00 2
80
+
69
81
  """
70
82
 
83
+
84
+
85
+ df.to_excel('ret.xlsx')
86
+
87
+ df.to_csv('ret.csv')
88
+
71
89
  ```