pandas:合并,连接和连接的第一步

时间:2016-11-01 18:55:46

标签: python pandas

我有一个类似下面的数据框,有3列12行。 12行是4个重复的类(三次)。我知道我从来没有1A,1D,2B和2D细胞的值,而且我总是有1B,1C,2A和2C细胞的细胞值。

enter image description here

我希望将它转换为类似于下面所示的内容,我将列和行名称组合在一起,以提取我知道将始终具有数据的所有单元格。 通过这种方式,我将避免不必要的重复或不必要的空单元格。

enter image description here

我试过阅读手册http://pandas.pydata.org/pandas-docs/stable/merging.html,但我有一些难以采取正确的方法。对我有些建议吗?

非常感谢

1 个答案:

答案 0 :(得分:2)

您可以使用:

#get index to MultiIndex in column
df = df.set_index(['class','date']).unstack(level=0)
#remove columns with all NaN, sort index
df = df.dropna(axis=1, how='all').sort_index(ascending=False)
#reset MultiIndex in columns, cast int to str in first level (1,2 values)
df.columns = [''.join((str(col[0]),col[1])) for col in df.columns]
#index to column
df.reset_index(inplace=True)
#reorder columns
df = df[df.columns[1:].union(df.columns[:1])]
print (df)
         1B        1C        2A            2C        date
0  1.462543  4.920529  4.496126  3.362060e+08  2016-10-31
1  3.931170  3.439862  2.453640  1.488948e+00  2016-10-30
2  3.550311  3.504713  3.224958  1.804881e+00  2016-10-29