我是Python的新手,所以非常感谢任何帮助或建议,如果我要问的是非常明显的问题,对不起。 我有以下数据:
WMO_NO YEAR MONTH DAY HOUR MINUTE H PS T RH TD WDIR WSP
0 4018 2006 1 1 11 28 38 988.6 0.9 98 0.6 120 14.4
1 4018 2006 1 1 11 28 46 987.6 0.5 91 -0.7 122 15.0
2 4018 2006 1 1 11 28 57 986.3 0.5 89 -1.1 124 15.5
3 4018 2006 1 1 11 28 66 985.1 0.5 90 -1.1 126 16.0
4 4018 2006 1 1 11 28 74 984.1 0.4 90 -1.1 127 16.5
我想将YEAR MONTH DAY HOUR MINUTE组合成一个新列,格式为YEAR:MONTH:DAY:HOUR:MINUTE(然后用该列索引T数据)并进行一些分析。 我的第一个问题是如何创建这样一个新列?第二个是我可以在此列上进行比较和分析吗,例如(YEAR:MONTH:DAY:HOUR:MINUTE> 2007:04:13:04:44)? 干杯。
答案 0 :(得分:0)
您可以使用to_datetime
,然后根据需要使用自定义格式的Series.dt.strftime
,请选中http://strftime.org/:
df['date'] = pd.to_datetime(df[['YEAR','MONTH','DAY','HOUR','MINUTE']])
df['date_new'] = df['date'].dt.strftime('%Y:%m:%d:%H:%M')
print (df)
WMO_NO YEAR MONTH DAY HOUR MINUTE H PS T RH TD WDIR \
0 4018 2006 1 1 11 28 38 988.6 0.9 98 0.6 120
1 4018 2006 1 1 11 28 46 987.6 0.5 91 -0.7 122
2 4018 2006 1 1 11 28 57 986.3 0.5 89 -1.1 124
3 4018 2006 1 1 11 28 66 985.1 0.5 90 -1.1 126
4 4018 2006 1 1 11 28 74 984.1 0.4 90 -1.1 127
WSP date date_new
0 14.4 2006-01-01 11:28:00 2006:01:01:11:28
1 15.0 2006-01-01 11:28:00 2006:01:01:11:28
2 15.5 2006-01-01 11:28:00 2006:01:01:11:28
3 16.0 2006-01-01 11:28:00 2006:01:01:11:28
4 16.5 2006-01-01 11:28:00 2006:01:01:11:28
答案 1 :(得分:0)
如果数据由整数而不是字符串组成,则可以使用它来创建日期时间索引:
import pandas as pd
import datetime as dt
columns = ['ID', 'Year', 'Month', 'Day', 'Hour', 'Minute']
data = [ ['1', 2006, 1, 1, 11, 28],
['2', 2006, 1, 1, 11, 29]]
df = pd.DataFrame(data=data, columns=columns)
df.index = df.apply(lambda x: dt.datetime(x['Year'], x['Month'], x['Day'], x['Hour'], x['Minute']), axis=1)