2017-04-25 126 views
0

enter image description here如何在头部的1个单元格中加入2个单元格?

以上就是我的数据框,我希望得到这一点放在头

enter image description here

任何人有这样的想法?

+4

请看看[如何使重复性好大熊猫的例子(https://stackoverflow.com/questions/20109391/how-to-make-good -reproducible-大熊猫-例子)。如果有代码可以生成输入数据,而不必从图像中重现数据,那么我们可以更容易地提供答案。 – languitar

回答

2

您可以使用:

a = ['201701', '', '201705', '', '201707'] 
b = ['PHI', 'Actual', 'Actual', 'PHI', 'Actual'] 
data = [[np.nan, np.nan, np.nan, 8, np.nan]] 
df = pd.DataFrame(data, index=['ClassCold'], columns = pd.MultiIndex.from_arrays([a,b])) 
print (df.columns) 
MultiIndex(levels=[['', '201701', '201705', '201707'], ['Actual', 'PHI']], 
      labels=[[1, 0, 2, 0, 3], [1, 0, 0, 1, 0]]) 

print (df) 
      201701  201705  201707 
      PHI Actual Actual PHI Actual 
ClassCold NaN NaN NaN 8 NaN 

通过get_level_values得到MultiIndex第一级,由to_seriesreplace空字符串(或空间)转换为SeriesNaNffill前填写NaN秒。

末创建新MultiIndexfrom_arrays

a = df.columns.get_level_values(0).to_series().replace('',np.nan).ffill() 
df.columns = df.columns = pd.MultiIndex.from_arrays([a, df.columns.get_level_values(1)]) 
print (df) 
      201701  201705  201707 
      PHI Actual Actual PHI Actual 
ClassCold NaN NaN NaN 8 NaN 

print (df.columns) 
MultiIndex(levels=[['201701', '201705', '201707'], ['Actual', 'PHI']], 
      labels=[[0, 0, 1, 1, 2], [1, 0, 0, 1, 0]]) 
相关问题