Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据数据帧的日期时间索引转换数据帧_Python_Pandas_Datetime - Fatal编程技术网

Python 根据数据帧的日期时间索引转换数据帧

Python 根据数据帧的日期时间索引转换数据帧,python,pandas,datetime,Python,Pandas,Datetime,我有以下数据帧: date = ['2014-02-03 23:00:00','2015-02-03 23:30:00','2015-02-04 00:00:00','2016-02-04 01:30:00'] value = [33.24 , 31.71 , 34.39 , 34.49 ] df = pd.DataFrame({'value':value,'index':date}) df.index = pd.to_datetime(df['index'],format='%Y-

我有以下数据帧:

date  = ['2014-02-03 23:00:00','2015-02-03 23:30:00','2015-02-04 00:00:00','2016-02-04 01:30:00'] 
value = [33.24  , 31.71  , 34.39  , 34.49  ]
df = pd.DataFrame({'value':value,'index':date})
df.index = pd.to_datetime(df['index'],format='%Y-%m-%d %H:%M')
df.drop(['index'],axis=1,inplace=True)
print(df.head())

                     value
index                     
2014-02-03 23:00:00  33.24
2015-02-03 23:30:00  31.71
2015-02-04 00:00:00  34.39
2016-02-04 01:30:00  34.49
我希望有效地“透视”数据帧,因此必须有以下结果:

                      2014   2015  2016
index                     
2014-02-03 23:00:00  33.24
2015-02-03 23:30:00         31.71
2015-02-04 00:00:00         34.39
2016-02-04 01:30:00                34.49
或者更好地“崩溃”上一个:

               2014   2015  2016
index                     
0             33.24  31.71  34.39
1                    34.39
我基本上想每年创建一个专栏。你知道如何有效地做到这一点吗

非常感谢,

您可以:

pd.pivot(df.index,df.index.year, df.value)

index                 2014   2015   2016
index                                   
2014-02-03 23:00:00  33.24    NaN    NaN
2015-02-03 23:30:00    NaN  31.71    NaN
2015-02-04 00:00:00    NaN  34.39    NaN
2016-02-04 01:30:00    NaN    NaN  34.49

# If you want blank strings instead of `NaN`:
# pd.pivot(df.index,df.index.year, df.value).fillna('')

# index                 2014   2015   2016
# index                                   
# 2014-02-03 23:00:00  33.24              
# 2015-02-03 23:30:00         31.71       
# 2015-02-04 00:00:00         34.39       
# 2016-02-04 01:30:00                34.49
关于您的编辑,要“colapse”这个,您可以使用
np.sort
并创建一个新的数据框(如果顺序不重要)。但不确定这是否是最有效的方法

pd.DataFrame(np.sort(pd.pivot(df.index,df.index.year, df.value),0)).dropna(how='all')

       0      1      2
0  33.24  31.71  34.49
1    NaN  34.39    NaN

谢谢是否有可能基本上“折叠”数据框架以去除大部分NaN值,并获得类似smth的2014年2015年2016年指数0 33.24 31.71 34.39 1 NaN 34.39 Nasorry,如果评论中没有换行符,就无法说出你的意思。你能在问题中以编辑的形式发布你想要的输出吗?就去掉
NaN
s而言,
fillna
还不够吗?