【发布时间】:2020-11-16 11:24:30
【问题描述】:
我有以下数据通过read_excel 方法进入数据框:
Time ... 2020-04-05 00:00:00
0 1900-01-01 00:00:00 ... 4
1 1900-01-01 00:05:00 ... 1
2 1900-01-01 00:10:00 ... 1
我想合并列标题日期和行时间,这样看起来更像:
Time ... value
0 2020-04-05 00:00:00 ... 4
1 2020-04-05 00:05:00 ... 1
2 2020-04-05 00:10:00 ... 1
我已经尝试了this question 和this question 的答案,但他们的做法与我相反(带有日期行的时间列),我想我正在为我的问题在某处调整代码。 根据上面的 Q1,我通过交换 timedelta 和 todates 行尝试了以下操作,因为列是我的日期,行是我的时间:
data.Time = pd.to_timedelta(data.Time.astype(str) + ':00', unit='h')
data = data.set_index('Time')
data.columns = pd.to_datetime(data.Time)
data = data.stack()
data.index = data.index.get_level_values(0) + data.index.get_level_values(1)
data = data.reset_index()
data.columns = ['date', 'val']
我在第一行收到错误
ValueError: unit must not be specified if the input contains a str 让我感到困惑,因为我确实指定了单位类型。
我觉得这就是答案,我已经接近了,我只是错过了一些东西,我无法弄清楚 - 如何将我的日期列与我的时间行结合起来?
使用的数据类型:Time = datetime64[ns], 2019-12-02 00:00:00 (etc.) = int64
编辑:误读错误并认为它表示该单元丢失。我删除了该单元,但收到了另一个错误 ValueError: only leading negative signs are allowed
【问题讨论】:
-
inout 数据的
print (df.columns)和输入数据的print (df.Time.head(3))是什么? -
列是:
Index(['Time', 2019-12-02 00:00:00, 2019-12-03 00:00:00, 2019-12-04 00:00:00, 2019-12-05 00:00:00])和 Time .head =0 1900-01-01 00:00:00 1 1900-01-01 00:05:00 2 1900-01-01 00:10:00 Name: Time, dtype: datetime64[ns] -
谢谢,答案已编辑,你能测试一下吗?
标签: python pandas date datetime