当只有日期的时候,如何在熊猫数据框的索引处显示时间(也采用所需的格式)?

我正面临着一些本来应该很容易的事情的挑战,但是我似乎没有找到解决方法。

万一这可能是造成问题的原因,我的df是通过减去另外两个数据帧而产生的,另外两个数据帧也都是在应用floor之后通过过滤特定频率而产生的。具体来说,这是下面的代码:

df1 = frame.loc[frame.index.hour == 5,'values']
df1.index = df1.index.floor('d')

df2 = frame.loc[frame.index.hour == 22,'values']
df2.index = df2.index.floor('d')

df=df1-df2

Out[51]: df1
Out[51]: 
datetime
2019-11-03    28.264286
2019-11-04    28.091429
2019-11-05    34.107143
2019-11-06    32.538571
2019-11-07    32.205714
2019-11-08    34.552857
2019-11-09    32.980000
2019-11-10    33.584286
2019-11-11    32.950000
2019-11-12    32.610000
Name: values,dtype: float64

Out[52]: df2
Out[52]: 
datetime
2019-11-03    28.110000
2019-11-04    33.185714
2019-11-05    32.674286
2019-11-06    32.311429
2019-11-07    32.045714
2019-11-08    33.252857
2019-11-09    32.671429
2019-11-10    33.141429
2019-11-11    32.708571
Name: values,dtype: float64

In[48]: df
Out[48]: 
datetime
2019-11-03    0.154286
2019-11-04   -5.094286
2019-11-05    1.432857
2019-11-06    0.227143
2019-11-07    0.160000
2019-11-08    1.300000
2019-11-09    0.308571
2019-11-10    0.442857
2019-11-11    0.241429
2019-11-12         NaN
Name: values,dtype: float64

但是,我希望df看起来像这样:

Out[50]: 
datetime
2019-11-03 00:00:00    0.154286
2019-11-04 00:00:00    -5.09429
2019-11-05 00:00:00     1.43286
2019-11-06 00:00:00    0.227143
2019-11-07 00:00:00        0.16
2019-11-08 00:00:00         1.3
2019-11-09 00:00:00    0.308571
2019-11-10 00:00:00    0.442857
2019-11-11 00:00:00    0.241429
2019-11-12 00:00:00         NaN

我一直在搜寻“熊猫式”方式,但没有发现令人满意的东西。因此,我尝试了这种方式,但是由于某种原因它没有起作用:

df['time']='00:00:00'

Out[50]: 
datetime
2019-11-03 00:00:00    0.154286
2019-11-04 00:00:00    -5.09429
2019-11-05 00:00:00     1.43286
2019-11-06 00:00:00    0.227143
2019-11-07 00:00:00        0.16
2019-11-08 00:00:00         1.3
2019-11-09 00:00:00    0.308571
2019-11-10 00:00:00    0.442857
2019-11-11 00:00:00    0.241429
2019-11-12 00:00:00         NaN
time                   00:00:00

...虽然我希望会出现一个新的列“ time”,然后将“ datetime”转换为字符串,将这两列连接在一起,然后再次将其转换为datetime类型。

有什么想法吗?与我认为的解决方法相比,我宁愿使用一种更为泛泛的方式。谢谢!

编辑:在任何人认为有必要的情况下添加

df.index

Out[78]: 
DatetimeIndex(['2019-11-03','2019-11-04','2019-11-05','2019-11-06','2019-11-07','2019-11-08','2019-11-09','2019-11-10','2019-11-11','2019-11-12'],dtype='datetime64[ns]',name='datetime',freq=None)
cen12 回答:当只有日期的时候,如何在熊猫数据框的索引处显示时间(也采用所需的格式)?

据我了解,您想要这样的东西?

import pandas as pd
import numpy as np

dates = ['2019-11-03','2019-11-04','2019-11-05','2019-11-06','2019-11-07','2019-11-08','2019-11-09','2019-11-10','2019-11-11','2019-11-12']
values = [0.15428599999999998,-5.094286,1.432857,0.22714299999999998,0.16,1.3,0.308571,0.44285699999999995,0.241429,np.nan]

df = pd.DataFrame({'values': values},index = dates)
df.index.name = 'datetime'
df

Out[1]:

            values
datetime    
2019-11-03  0.154286
2019-11-04  -5.094286
2019-11-05  1.432857
2019-11-06  0.227143
2019-11-07  0.160000
2019-11-08  1.300000
2019-11-09  0.308571
2019-11-10  0.442857
2019-11-11  0.241429
2019-11-12  NaN


df.index = pd.to_datetime(df.reset_index()['datetime']).dt.strftime('%Y-%m-%d %H:%M:%S')
df

Out[2]:

                        value
datetime    
2019-11-03 00:00:00     0.154286
2019-11-04 00:00:00     -5.094286
2019-11-05 00:00:00     1.432857
2019-11-06 00:00:00     0.227143
2019-11-07 00:00:00     0.160000
2019-11-08 00:00:00     1.300000
2019-11-09 00:00:00     0.308571
2019-11-10 00:00:00     0.442857
2019-11-11 00:00:00     0.241429
2019-11-12 00:00:00      NaN
本文链接:https://www.f2er.com/3095875.html

大家都在问