質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

846閲覧

Unix timestampからDateTimeへ変換

sayaka1202

総合スコア18

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/03/08 04:58

#やりたいこと
numpy.ndarray型の一つの列にUnixtimestampが入っているので、UnixtimestampをDatetimeへ変換したいと思っています。(以下のようなテーブルの1列目をDatetimeにしたい)

unixtimestampxxxyyy
1520454360111555
1520454420222666
1520454480333777
1520454540444888

最終的にpandasのデータフレームに格納してCSVで保存しようと思っています。
ご教授下さい

試したこと

python

1dt_data = np.array(unix_data) 2>>> [[1520454360, 111, 555], [1520454420, 222, 666], [1520454480, 333, 777], [1520454540, 444, 888]] 3 4dt_data[:, 0] = datetime.datetime.fromtimestamp(dt_data[:, 0]) 5 6>>> TypeError: only length-1 arrays can be converted to Python scalars

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

勉強がてら。

python

1dt_data = np.array([[1520454360, 111, 555], [1520454420, 222, 666], [1520454480, 333, 777], [1520454540, 444, 888]]) 2dt_data = dt_data.astype(str) 3dt_data[:, 0] = [datetime.datetime.fromtimestamp(float(n)) for n in dt_data[:, 0]] 4print(dt_data) 5#[['2018-03-07 20:26:00' '111' '555'] 6# ['2018-03-07 20:27:00' '222' '666'] 7# ['2018-03-07 20:28:00' '333' '777'] 8# ['2018-03-07 20:29:00' '444' '888']]

ってほどでもなかった。
型の問題だけ。

投稿2018/03/08 06:52

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

pandasにやらせてみては。

python

1import pandas as pd 2df = pd.DataFrame(dt_data, columns=["time", "xxx", "yyy"]) 3df["time"] = pd.to_datetime(df["time"], unit="s")

投稿2018/03/08 05:14

編集2018/03/08 05:54
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sayaka1202

2018/03/08 05:49

dt_data[:, 0] = pd.to_datetime(dt_data[:, 0], unit="s") print(dt_data) としたところ、変化が見られませんでした。試しに temp = pd.to_datetime(dt_data[:, 0], unit="s") print(temp) としたところ、DatetimeIndexとして返ってくるのはわかりました。 この場合どう記述すればよかったのでしょうか?
退会済みユーザー

退会済みユーザー

2018/03/08 05:54

先にmatrixをdataframeにしてしまうのが楽なように思います。
sayaka1202

2018/03/08 06:04

その方法でいけました!ありがとうございます。
guest

0

いかがでしょうか

import datetime u_time = [1520454360, 111, 555] t = datetime.datetime.fromtimestamp(u_time[0]) print(t) #2018-03-08 05:26:00

参考
https://qiita.com/endorno/items/9d98b486b3c226b29195

追記

いえ、numpyの変換をできるかどうかが問題のようですね...。大変失礼いたしました。

投稿2018/03/08 05:01

編集2018/03/08 05:05
mofu_mofu

総合スコア73

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問