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

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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

1192閲覧

+09:00を消したい

chouchou

総合スコア10

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2022/12/13 06:56

0

0

Pandas ではまっていまして、、
Date(JST)
0 2010-04-01 00:00:00+09:00
1 2010-04-01 00:05:00+09:00
2 2010-04-01 00:10:00+09:00
3 2010-04-01 00:15:00+09:00
4 2010-04-01 00:20:00+09:00
... ... ... ...
1315003 2022-09-30 23:35:00
1315004 2022-09-30 23:40:00

2つのファイルを結合したら、JST表記が混在していて、その後の処理がしにくいため、
文字列にして「+09:00」を削除したいのですが、
df["Date(JST)"] = df["Date(JST)"].str.replace("'+'09:00", "")
と書いて実行すると+09:00が削除されず、
df["Date(JST)"] = df["Date(JST)"].str.replace("+09:00", "")
と書いて実行すると
error: nothing to repeat at position 0
となってしまいます。
+がいけないように思うのですが、どのように記載したら+09:00を消せるでしょうか?

(元のファイルから、共に
df["Date(JST)"] = df.index.tz_convert("Asia/Tokyo")
してから結合すればよいのかもしれませんが、タイムゾーンの記載諸々でそれをするのが難しかったという背景があります)

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

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

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

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

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

melian

2022/12/13 07:27

regex=False を付けます。 df["Date(JST)"] = df["Date(JST)"].str.replace("+09:00", "", regex=False)
chouchou

2022/12/13 07:30

melian様いつもすみません。。ありがとうございます。 regex=Falseをつける・・ヒットしませんでした。。ちょっと調べます。 すごく助かりました。
chouchou

2022/12/13 07:38

pig_vba様 tz_localizeで、そうですよね、、出来ると思うのですが、文字列操作で簡単な方を知りたくて、 ゆっくり確認させて頂きますね。
guest

回答2

0

自己解決

melian様のregex=False を付ける、を実行することで一時解決とします。

投稿2022/12/13 07:39

chouchou

総合スコア10

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

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

0

詳しい理屈は理解できていませんがTrying to convert aware local datetime to naive local datetime in Panda DataFrameの回答のようにdateime型にしたあとに変換するとよいかと思います。

Python

1import pandas as pd 2from io import StringIO 3 4# 混在したデータ 5s = """Date 62010-04-01 00:00:00+09:00 72010-04-01 00:05:00+09:00 82022-09-30 23:35:00""" 9df = pd.read_csv(StringIO(s)) 10 11df['ret'] = pd.to_datetime(df['Date']) 12df['ret'] = df['ret'].apply(lambda t: t.replace(tzinfo=None)) 13print(df) 14""" 15 Date ret 160 2010-04-01 00:00:00+09:00 2010-04-01 00:00:00 171 2010-04-01 00:05:00+09:00 2010-04-01 00:05:00 182 2022-09-30 23:35:00 2022-09-30 23:35:00 19"""

投稿2022/12/13 07:33

can110

総合スコア38352

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問