次のデータフレームがあります。
id int_date
1 20160228
2 20161231
3 20160618
4 20170123
5 20151124
Int形式の上記の日付をmm/dd/yyyyの日付形式に変換する方法は?これを特定の形式でさらにExcelの操作に使用したいですか?
id int_date
1 02/28/2016
2 12/31/2016
3 06/18/2016
4 01/23/2017
5 11/24/2015
単語で月のみで3番目の列を生成することもできますか? int_dateから1月、2月など?
フォローしてみました
date = datetime(year=int(s[0:4]), month=int(s[4:6]), day=int(s[6:8]))
しかし、日付はdatetimeオブジェクトにあり、日付としてpandas DF?
datetime
メソッドを使用できます。
from datetime import datetime
a = '20160228'
date = datetime.strptime(a, '%Y%m%d').strftime('%m/%d/%Y')
がんばろう;
applymap
を使用して新しい列を作成します。
import pandas as pd
dates = [
20160228,
20161231,
20160618,
20170123,
20151124,
]
df = pd.DataFrame(data=list(enumerate(dates, start=1)), columns=['id','int_date'])
df[['str_date']] = df[['int_date']].applymap(str).applymap(lambda s: "{}/{}/{}".format(s[4:6],s[6:], s[0:4]))
print(df)
放出:
$ python test.py
id int_date str_date
0 1 20160228 02/28/2016
1 2 20161231 12/31/2016
2 3 20160618 06/18/2016
3 4 20170123 01/23/2017
4 5 20151124 11/24/2015
これにはより良い解決策がありますが、日付に1桁の要素の代わりにゼロがあります(つまり6ではなく06)ので、なぜそれを文字列に変換してサブセクションを変換しないのですか?
datetimeを使用すると、月の文字列なども取得できます。
//編集:もう少し正確にするには、次のようなものが仕事をするはずです:
def get_datetime(date):
date_string = str(date)
return datetime.date(date_string[:3], date_string[4:6], date_string[6:8]