我有一个类似下面的数据框,有3列12行。 12行是4个重复的类(三次)。我知道我从来没有1A,1D,2B和2D细胞的值,而且我总是有1B,1C,2A和2C细胞的细胞值。
我希望将它转换为类似于下面所示的内容,我将列和行名称组合在一起,以提取我知道将始终具有数据的所有单元格。 通过这种方式,我将避免不必要的重复或不必要的空单元格。
我试过阅读手册http://pandas.pydata.org/pandas-docs/stable/merging.html,但我有一些难以采取正确的方法。对我有些建议吗?
非常感谢
答案 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