上記のような整数(int64)が入ってるcolumnから、
year | month | day | Hour | Minute | Second |
---|---|---|---|---|---|
2016 | 12 | 8 | 14 | 49 | 11 |
と分けて、dataflameにそれぞれ新たにcolumnを上記のように追加したいです。
"/"や"空白"、","で区切られた場合の分割方法はググっても、見つかるのですが、そういった文字・記号がない場合にどのように処理をしたほうがいいのかわかりません。
教えていただけましたら幸いです。
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
あ、ごめんなさい。pandasですね。
以下のコードでどうでしょうか。
Python
1# -*- coding: utf-8 -*- 2import pandas as pd 3 4 5def main(): 6 df = pd.DataFrame({"date": [20161208144911000, 20171208144911000, 20181208144911000], 7 "name": ['name1', 'name2', 'name3'] 8 }) 9 10 df['out_date'] = pd.to_datetime(df['date'], format='%Y%m%d%H%M%S%f') 11 df['year']= df['out_date'].dt.year 12 df['month'] = df['out_date'].dt.month 13 df['day'] = df['out_date'].dt.day 14 df['hour'] = df['out_date'].dt.hour 15 df['minute'] = df['out_date'].dt.minute 16 df['second'] = df['out_date'].dt.second 17 del df['out_date'] 18 print(df) 19 20 21if __name__ == '__main__': 22 main()
以下は編集前の回答です。失礼しました。
Python
1# -*- coding: utf-8 -*- 2from datetime import datetime 3 4 5def main(): 6 input_date = 20161208144911000 7 output_datetime = datetime.strptime(str(input_date), "%Y%m%d%H%M%S%f") 8 print("#" * 60) 9 print(output_datetime) 10 print(output_datetime.year, output_datetime.month, output_datetime.day, 11 output_datetime.hour, output_datetime.minute, output_datetime.second) 12 13if __name__ == '__main__': 14 main()
投稿2018/01/03 08:51
編集2018/01/03 10:06総合スコア5846
0
スライスでいけそうですね。
2018/01/03 17:40追記
スライスのポイントは2つです。
文字列
から文字列
をくりぬきます。チョッと回りくどいですが、一度int
をstr
にしてからです。スライスする文字列[開始位置:終了位置]
の形式です。開始位置は0から始め、終了位置は1から始めるのと同じ数で指定(0から始めた場合、終了位置は0から始めた数値+1です)します。
Python
1# coding: UTF-8 2int_date = 20161208144911000 3str_date = str(int_date) 4 5# print("year:" + str_date[0:4]) 6# print("month:" + str_date[4:6]) 7# print("day:" + str_date[6:8]) 8# print("hour:" + str_date[8:10]) 9# print("minute:" + str_date[10:12]) 10# print("second:" + str_date[12:14]) 11# print("float:" + str_date[14:17]) 12 13print(str_date[0:4]) 14print(str_date[4:6]) 15print(str_date[6:8]) 16print(str_date[8:10]) 17print(str_date[10:12]) 18print(str_date[12:17]) 19
投稿2018/01/03 07:40
編集2018/01/03 08:43退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
ご回答ありがとうございます。
一つの文字列ではなく、1列全体内でスライスするにはどうしたらよいのでしょうか?
(初学者のため、初歩的な質問でしたらすみません)
退会済みユーザー
2018/01/03 08:41 編集
編集しますね。
「1列全体内でスライス」をもう少し詳しく表現できますか?データフレームとありましたがPandasでしょうか。Pandasは使ったことが無いですが、普通のリストと同じように、くりぬいた数値の文字列を突っ込んでいけばよさそうですが...
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。