teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

タイポを修正

2017/07/22 16:10

投稿

magichan
magichan

スコア15898

answer CHANGED
@@ -31,4 +31,4 @@
31
31
  とした後に、``T``で転置してためかと思います。
32
32
 
33
33
  ``Pandas`` では列毎に``型``が決まるため、上記のように記述すると、
34
- ``datetime64``型のデータと``int64``型のデータが**同じ列**にいる為に、型``object``型に変換されてしまいます。ところが4行目(この時点では4列目)だけは``int64``型のデータが存在しない為、この行だけ``datetime64``型のままでデータが保存されることとなります。
34
+ ``datetime64``型のデータと``int64``型のデータが**同じ列**にいる為に、型``object``型に変換されてしまいます。ところが4行目(この時点では4列目)だけは``int64``型のデータが存在しない為、この行だけ``datetime64``型のままでデータが保存されることとなります。

1

補足を追加

2017/07/22 16:10

投稿

magichan
magichan

スコア15898

answer CHANGED
@@ -16,4 +16,19 @@
16
16
  df = pd.DataFrame({'date':pd.Series(dates), 'price':pd.Series(prices)})
17
17
  df = df.set_index("date")
18
18
  print(df)
19
- ```
19
+ ```
20
+
21
+ ---
22
+ **【補足】**
23
+
24
+ 質問のように、4行目のみ型が違う原因は、``DataFrame`` 作成の際に
25
+ 一度
26
+
27
+ ```Python
28
+ df = pd.DataFrame([dates, prices], ['date', 'price'])
29
+ ```
30
+
31
+ とした後に、``T``で転置してためかと思います。
32
+
33
+ ``Pandas`` では列毎に``型``が決まるため、上記のように記述すると、
34
+ ``datetime64``型のデータと``int64``型のデータが**同じ列**にいる為に、型を``object``型に変換されてしまいます。ところが4行目(この時点では4列目)だけは``int64``型のデータが存在しない為、この行だけ``datetime64``型のままでデータが保存されることとなります。