将单列切片为二维 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
如何将单列切片为二维 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