扁平化熊猫数据框中的层次结构

时间:2021-01-21 22:37:48

标签: python python-3.x pandas dataframe

我有一个 excel 文件,其中包含 2 列中捕获的 3 个层次级别的数据。

  A          B          C
  X          nan       nan
  Y          value     nan
  nan        Z         SOMETHING 

   

在上面的示例中,层次结构在 A 和 B 列中进行管理。X 是层次结构的第一层,Y 是第二层,Z 是第三层。我需要在一行(展平)中创建一个具有这三个级别的数据框,并且第 3 列的值如下所示

A   B   C  D
X   Y   Z  SOMTHING

1 个答案:

答案 0 :(得分:0)

对于您提供的示例,这将提供所需的输出。基本上是转置,回填空值,然后切片和连接以获得最终结果。

import pandas as pd
import numpy as np
df = pd.DataFrame(
{'A': {0: 'X', 1: 'Y', 2: np.nan},
 'B': {0: np.nan, 1: 'value', 2: 'Z'},
 'C': {0: np.nan, 1: np.nan, 2: 'SOMETHING'}})

df = df.T.bfill()

df = pd.concat([df.iloc[:1,:3].reset_index(drop=True),
           df.iloc[-1:,-1:].reset_index(drop=True)],
          axis=1)
df.columns = ['A','B','C','D']

输出

   A  B  C          D
0  X  Y  Z  SOMETHING