简体   繁体   English

如何将 MultiIndex 转换为 dataframe,其中一个索引作为行,第二个索引作为列,另一列作为值

[英]How do I transform a MultiIndex to a dataframe with one index as rows, second index as columns and another columns as values

How to I convert the below multi-index dataframe:如何转换以下多索引 dataframe:

open打开 high高的 low低的 close volume体积
symbol象征 date日期
4005 4005 2017-12-03 07:00:00 2017-12-03 07:00:00 38.75 38.75 38.75 38.75 38.75 38.75 38.75 38.75 2518 2518
4333 4333 2018-01-04 09:58:00 2018-01-04 09:58:00 12.06 12.06 12.06 12.06 12.06 12.06 12.06 12.06 2000 2000
4338 4338 2018-01-22 10:06:00 2018-01-22 10:06:00 9.22 9.22 9.22 9.22 9.22 9.22 9.22 9.22 10 10
2018-01-22 11:23:00 2018-01-22 11:23:00 9.22 9.22 9.22 9.22 9.22 9.22 9.22 9.22 1000 1000
4334 4334 2017-12-14 08:41:00 2017-12-14 08:41:00 9.28 9.28 9.28 9.28 9.28 9.28 9.28 9.28 2 2
4332 4332 2018-01-02 10:19:00 2018-01-02 10:19:00 10.30 10.30 10.30 10.30 10.30 10.30 10.30 10.30 100 100
2018-01-09 08:56:00 2018-01-09 08:56:00 10.28 10.28 10.30 10.30 10.28 10.28 10.30 10.30 1500 1500

To this table below with symbol as columns and "close" column as the value到下表中,以符号为列,“关闭”列为值

4005 4005 4333 4333 4338 4338 4334 4334 4332 4332
date日期
2017-12-03 07:00:00 2017-12-03 07:00:00 38.75 38.75 nan nan nan nan
2018-01-04 09:58:00 2018-01-04 09:58:00 nan 12.06 12.06 nan nan nan
2018-01-22 10:06:00 2018-01-22 10:06:00 nan nan 9.22 9.22 nan nan
2018-01-22 11:23:00 2018-01-22 11:23:00 nan nan 9.22 9.22 nan nan
2017-12-14 08:41:00 2017-12-14 08:41:00 nan nan nan 9.28 9.28 nan
2018-01-02 10:19:00 2018-01-02 10:19:00 nan nan nan nan 10.30 10.30
2018-01-09 08:56:00 2018-01-09 08:56:00 nan nan nan nan 10.30 10.30

Use pivot使用pivot

Setup设置

import pandas as pd

df = pd.DataFrame({
    'symbol': {0: 4005, 1: 4333, 2: 4338, 3: 4338, 4: 4334, 5: 4332, 6: 4332},
    'date': {0: '2017-12-03 07:00:00', 1: '2018-01-04 09:58:00',
             2: '2018-01-22 10:06:00', 3: '2018-01-22 11:23:00',
             4: '2017-12-14 08:41:00', 5: '2018-01-02 10:19:00',
             6: '2018-01-09 08:56:00'},
    'open': {0: 38.75, 1: 12.06, 2: 9.22, 3: 9.22, 4: 9.28, 5: 10.3, 6: 10.28},
    'high': {0: 38.75, 1: 12.06, 2: 9.22, 3: 9.22, 4: 9.28, 5: 10.3, 6: 10.3},
    'low': {0: 38.75, 1: 12.06, 2: 9.22, 3: 9.22, 4: 9.28, 5: 10.3, 6: 10.28},
    'close': {0: 38.75, 1: 12.06, 2: 9.22, 3: 9.22, 4: 9.28, 5: 10.3, 6: 10.3},
    'volume': {0: 2518, 1: 2000, 2: 10, 3: 1000, 4: 2, 5: 100, 6: 1500}
})
# Recreate Multi-Index Data
df = df.set_index(['symbol', 'date'])

Create new_df with pivoted data.使用透视数据创建new_df

# Reset Index and Pivot
new_df = df \
    .reset_index() \
    .pivot(index='date', columns='symbol', values='close') \
    .rename_axis(None, axis=1)

print(new_df)
                      4005  4332   4333  4334  4338
date                                               
2017-12-03 07:00:00  38.75   NaN    NaN   NaN   NaN
2017-12-14 08:41:00    NaN   NaN    NaN  9.28   NaN
2018-01-02 10:19:00    NaN  10.3    NaN   NaN   NaN
2018-01-04 09:58:00    NaN   NaN  12.06   NaN   NaN
2018-01-09 08:56:00    NaN  10.3    NaN   NaN   NaN
2018-01-22 10:06:00    NaN   NaN    NaN   NaN  9.22
2018-01-22 11:23:00    NaN   NaN    NaN   NaN  9.22

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 通过另一个包含行和列索引作为列的DataFrame来索引具有MultiIndex行和列的DataFrame - Index DataFrame with MultiIndex Rows and Columns via another DataFrame containing row and column indices as columns 如何将具有相同索引(MultiIndex之一)的行值转换为列 - How to convert row values with same index(one of the MultiIndex) into columns 如何查询pandas中的MultiIndex索引列值 - How to query MultiIndex index columns values in pandas 取消透视/带有MultiIndex列和行的melt()Pandas DataFrame时缺少索引 - Missing index when unpivotting / melt() Pandas DataFrame with MultiIndex columns and rows 如何将Pandas DataFrame从列索引形状转换为列值汇总值 - How to transform Pandas DataFrame from columns-index shape to columns-columns shape summarizing values 当其中一列是 dataframe 中的索引时,如何合并多列上的两个数据框 - How do I merge two dataframes on multiple columns when one of the columns is an index in one dataframe 在 Pandas 数据框中将 MultiIndex 列合并为单个索引 - Combine MultiIndex columns to a single index in a pandas dataframe DataFrame 来自系列,索引值为行/列 - DataFrame from series, with values of index as rows/columns 将数据帧行转换为具有重复索引值的列 - Convert dataframe rows to columns with repeated index values 如何使用另一个数据框的MultiIndex过滤一个数据框的列 - How to filter one dataframe's columns with another dataframe's MultiIndex
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM