将单列切片为二维 pandas DataFrame

Slice single column to two dimensional pandas DataFrame

如何将单列切片为二维 pandas DataFrame?

我有多种工具的单列时间序列数据:

DATE        ISIN            ASK
01.05.2017  XS1431271250    0.2401
02.03.2017  XS1431271250    0.2578
01.03.2017  XS1431271250    0.2665
01.05.2017  XS1431274601    0.0474
02.03.2017  XS1431274601    0.0471
01.03.2017  XS1431274601    0.0479
01.05.2017  XS1431271094    0.2419
02.03.2017  XS1431271094    0.2454
01.03.2017  XS1431271094    0.254

我需要每个 ISIN 的单列:

Date        XS1431271250    XS1431274601    XS1431271094
01.05.2017  0.2401          0.0474          0.2419
02.03.2017  0.2578          0.0471          0.2454
01.03.2017  0.2665          0.0479          0.254

我试过分组,df.factorize,df.melt,但没有成功。 请指教正确的方法?

result = df.pivot('DATE','ISIN')
#                    ASK                          
#ISIN       XS1431271094 XS1431271250 XS1431274601
#DATE                                             
#01.03.2017       0.2540       0.2665       0.0479
#01.05.2017       0.2419       0.2401       0.0474
#02.03.2017       0.2454       0.2578       0.0471

如果您更喜欢扁平化的列名称,可以删除 'ASK' 级别:

result.columns = result.columns.get_level_values(1)
#ISIN        XS1431271094  XS1431271250  XS1431274601
#DATE                                                
#01.03.2017        0.2540        0.2665        0.0479
#01.05.2017        0.2419        0.2401        0.0474
#02.03.2017        0.2454        0.2578        0.0471

这个操作叫做pivot:

>>> df.pivot(index='DATE', columns='ISIN')
                ASK                          
ISIN       XS1431271094 XS1431271250 XS1431274601
DATE                                             
01.03.2017       0.2540       0.2665       0.0479
01.05.2017       0.2419       0.2401       0.0474
02.03.2017       0.2454       0.2578       0.0471

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.pivot.html