我有一个 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
答案 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