簡體   English   中英

將年和月名稱轉換為pandas dataframe的datetime列

[英]convert year and month name into datetime column for pandas dataframe

如何將年份和月份名稱轉換為此數據幀的datetime列:

 region  year    Months
0  alabama  2018   January
1  alabama  2018  February
2  alabama  2018     March
3  alabama  2018     April
4  alabama  2018       May

當我這樣做:

pd.to_datetime(df_sub['year'] * 10000 + df_sub['Months'] * 100, format='%Y%m')

我收到此錯誤:

*** TypeError: unsupported operand type(s) for +: 'int' and 'str'

您可以將year列轉換為字符串,在http://strftime.org/中添加Months並在to_datetime使用參數format

print (pd.to_datetime(df_sub['year'].astype(str)  + df_sub['Months'], format='%Y%B'))
0   2018-01-01
1   2018-02-01
2   2018-03-01
3   2018-04-01
4   2018-05-01
dtype: datetime64[ns]

理解中的f-string(Python 3.6+)

pd.to_datetime([f'{y}-{m}-01' for y, m in zip(df.year, df.Months)])

DatetimeIndex(['2018-01-01', '2018-02-01', '2018-03-01', '2018-04-01',
               '2018-05-01'],
              dtype='datetime64[ns]', freq=None)

str.format

pd.to_datetime(['{}-{}-01'.format(y, m) for y, m in zip(df.year, df.Months)])

DatetimeIndex(['2018-01-01', '2018-02-01', '2018-03-01', '2018-04-01',
               '2018-05-01'],
              dtype='datetime64[ns]', freq=None)

這是一個簡單的程序,可以獲取您正在尋找的輸出:

import pandas as pd

data_frame = pd.DataFrame({'Region': ['alabama', 'alabama', 'alabama', 'alabama', 'alabama'],
                          'Year': [2018, 2018, 2018, 2018, 2018], 'Months': ['January', 'February', 'March', 'April', 'May']})


date_1 ='{}-{}'.format(data_frame['Months'].iloc[0], data_frame['Year'].iloc[0])
date_2 = '{}-{}'.format('June', data_frame['Year'].iloc[4])

data_frame.index = pd.date_range(date_1, date_2, freq='M')
print(data_frame)

我們可以在范圍的起始位置格式化日期,並從最終位置+ 1個月格式化date_2,以便我們避免索引錯誤。 將這些值格式化為字符串將允許pandas使用date_range()函數將它們格式化為日期。 我們可以將索引設置為此范圍,因為您說您想要一個包含這些值的列,但如果您不希望將日期作為索引,我們還可以創建一個名為dates的列,並使用insert語句添加它們哪里都行。 在我們的date_range函數中,date_1將是我們的第一個日期,而date_2將是我們的最后日期。 我們還可以將頻率設置為每月,以便日期列中的索引與其他列中的索引對齊。 以下是我們的輸出:

              Months   Region  Year
2018-01-31   January  alabama  2018
2018-02-28  February  alabama  2018
2018-03-31     March  alabama  2018
2018-04-30     April  alabama  2018
2018-05-31       May  alabama  2018

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM