拆分日期时间、python、pandas
很抱歉,我对stackoverflow的问题不太熟悉,所以我不知道如何正确格式化 所以我得到了一个包含datetime列的Pandas数据框,该列包含日期和时间,以及一个包含某种值的关联列。给定的日期和时间按小时递增。我希望操纵数据帧,使其每15分钟递增一次,但保留相同的值。我该怎么做?谢谢 我试过:拆分日期时间、python、pandas,python,pandas,datetime,time-series,Python,Pandas,Datetime,Time Series,很抱歉,我对stackoverflow的问题不太熟悉,所以我不知道如何正确格式化 所以我得到了一个包含datetime列的Pandas数据框,该列包含日期和时间,以及一个包含某种值的关联列。给定的日期和时间按小时递增。我希望操纵数据帧,使其每15分钟递增一次,但保留相同的值。我该怎么做?谢谢 我试过: df=df.asfreq('15Min',方法='ffill') 但我有一个错误: “TypeError:无法将类型'Timestamp'与类型'long'进行比较” 当前数据帧: datetim
df=df.asfreq('15Min',方法='ffill')
但我有一个错误:
“TypeError:无法将类型'Timestamp'与类型'long'进行比较”
当前数据帧:
datetime value
00:00:00 1
01:00:00 2
datetime value
00:00:00 1
00:15:00 1
00:30:00 1
00:45:00 1
01:00:00 2
01:15:00 2
01:30:00 2
01:45:00 2
新数据帧:
datetime value
00:00:00 1
01:00:00 2
datetime value
00:00:00 1
00:15:00 1
00:30:00 1
00:45:00 1
01:00:00 2
01:15:00 2
01:30:00 2
01:45:00 2
更新:下面批准的答案是有效的,但我在上面尝试的初始代码也是有效的
df=df.asfreq('15Min',方法='ffill')
。我在处理其他数据帧时遇到了一些空值问题,所以我用fillna语句处理了这些问题,一切都正常了。您可以使用,但需要手动添加最后一个值才能更正:
具有相同问题的另一个解决方案-需要追加新值才能正确追加最后一个值:
df['datetime'] = pd.to_timedelta(df['datetime'])
df = df.set_index('datetime')
df.loc[df.index.max() + pd.Timedelta(1, unit='h')] = 1
df = df.resample('15Min').ffill().iloc[:-1]
print (df)
value
datetime
00:00:00 1
00:15:00 1
00:30:00 1
00:45:00 1
01:00:00 2
01:15:00 2
01:30:00 2
01:45:00 2
但如果值是datetime:
print (df)
datetime value
0 2018-01-01 00:00:00 1
1 2018-01-01 01:00:00 2
df['datetime'] = pd.to_datetime(df['datetime'])
df = df.set_index('datetime')
tr = pd.date_range(df.index.min(),
df.index.max() + pd.Timedelta(45*60, unit='s'), freq='15Min')
df = df.reindex(tr, method='ffill')
您可以使用pandas.daterange
pd.date_range('00:00:00', '01:00:00', freq='15T')
对不起,这个问题对我来说不够清楚。“让他们增加”是什么意思?你想把行分成更小的单位吗?是的,我试过df=df.asfreq('15Min',method='ffill')。但是我得到一个“TypeError:无法将类型'Timestamp'与类型'long'进行比较”@ts初学者-什么是
print(df.info())
?datetime是datetime64[ns],值是float64@tsbeginner-我问了一些不同的问题,print(df.info())
返回更多信息,因为datetime是datetime64[ns]值为float64
我得到以下错误:TypeError:不支持+:'numpy.int64'和'Timedelta'的操作数类型。如果我的值是datetime。@TS初学者-请检查下面的注释。@TS初学者-似乎需要检查答案的最后两段,主要是不要忘记df=df.set_index('datetime')
Ok,那么在df=df.set_index('datetime')
什么是print(df.index)
?与之前一样,datetime为datetime64,值为float64