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

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

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

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

455閲覧

【python】日付データの表示形式変更方法

sagiyama

総合スコア29

Python 3.x

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2022/11/28 00:00

実現したいこと

Excelファイルを読み込んだ際に、日付フォーマットが「2022-01-01 00:00:00 」形式になってしまうが、改めて書き出すときは「1/1」形式にしたい。
ちなみに日付はExcelファイルでいうと「G1」から横に1年分並んでおります。
「G1」以前は文字列が並んでおります。
pythonで読み込んだときはヘッダーになっています。

試したこと①

python

1df=pd.read_excel('A.xlsx') 2data_frame = pd.DataFrame(df) 3list1=[] 4for column in data_frame: 5 list1.append(column) 6len=len(list1) 7for i in range(len): 8 if type(list1[i])==datetime.datetime: 9 list1[i]=pd.to_datetime(list1[i],format='%m/%d') 10 else: 11 pass 12df.columns=df

これだとフォーマットが変わらずに「2022-01-01 00:00:00 」になってしまいます。

試したこと②

python

1df=pd.read_excel('A.xlsx') 2data_frame = pd.DataFrame(df) 3list1=[] 4for column in data_frame: 5 list1.append(column) 6len=len(list1) 7for i in range(len): 8 if type(list1[i])==datetime.datetime: 9   list1[i]=list1[i].strftime('%m/%d') 10 else: 11 pass 12df.columns=df

上記のように文字列にすると「01/01」形式にはなるのですが、
Excelファイルで処理する時に日付型の方が良いのでできれば日付型のまま処理したいです。

ご教示の程、宜しくお願いいたします。

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

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

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

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

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

melian

2022/11/28 00:16

「年」が無いと日付(date)型にできませんので、元のカラム(date型)と「01/01」形式のカラム(文字列型)を持たせる様にしてみてはどうでしょうか。
sagiyama

2022/11/28 00:29

ヘッダーは「2022-01-01 00:00:00 」形式にしておき、その下の行かどこかで「01/01」形式を追加するということでしょうか。
melian

2022/11/28 00:38

すみません、「『G1』から横に1年分並んでおります」の部分を読み飛ばしていました。そうなりますと、例えば A2 から F2 まで NaN で G2 から1年分の日付データ(「01/01」形式)を並べる形式になります(冗長かもしれませんが)。
sagiyama

2022/11/28 01:05

「openpyxl」を使用して解決いたしました。 ご回答いただきありがとうございました。
guest

回答1

0

自己解決

from openpyxl import load_workbook
wb = load_workbook('A.xlsx')
ws = wb.active
for column in ws.iter_cols():
column[0].number_format = 'mm/dd'
wb.save('A.xlsx')

投稿2022/11/28 01:06

sagiyama

総合スコア29

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問