在列中转换年份格式并将3个其他列连接到pandas中的结果

时间:2016-06-16 06:51:58

标签: python datetime pandas dataframe

我的数据在下面的表格中,但我设法将其放入数据框中,但现在我需要转换77 1977,然后用YYYY-MM-DD hh:mm创建一个列并将其用作索引。

我的数据示例:

an example of my data

1 个答案:

答案 0 :(得分:0)

您可以使用to_datetime并在必要时使用drop这些列:

df = pd.DataFrame({'YY':[77,77,77],
                   'MM':[1,2,4],
                   'DD':[1,3,5],
                   'hh':[1,3,5],
                   'mm':[5,3,6],
                   'F':[7,4,3]})

print (df)
   DD  F  MM  YY  hh  mm
0   1  7   1  77   1   5
1   3  4   2  77   3   3
2   5  3   4  77   5   6

df.index= pd.to_datetime(df['YY']*100000000
                         +df['MM']*1000000
                         +df['DD']*10000
                         +df['hh']*100
                         +df['mm'],format='%y%m%d%H%M')

df.drop(['YY','MM','DD','hh','mm'], axis=1, inplace=True)
print (df)
                     F
1977-01-01 01:05:00  7
1977-02-03 03:03:00  4
1977-04-05 05:06:00  3 

另一个包含rename列的解决方案,但它仅适用于版本0.18.1

df['YY'] = df.YY + 1900
df = df.rename(columns={'YY':'year','MM':'month','DD':'day','hh':'hour','mm':'minute'})

df.index = pd.to_datetime(df[['year', 'month', 'day', 'hour', 'minute']])
print (df)

                     day  F  month  year  hour  minute
1977-01-01 01:05:00    1  7      1  1977     1       5
1977-02-03 03:03:00    3  4      2  1977     3       3
1977-04-05 05:06:00    5  3      4  1977     5       6