Как сделать субтитры столбца в пандах данных? - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь написать имя подстолбца в приведенном ниже наборе данных. Я даже не уверен, как назвать это название ... Я попытался Google, но я не мог найти аналогичный случай с этим.

Это текущий фрейм данных

    Height  time_of_day resolution  Height  time_of_day resolution  Height  time_of_day resolution  Height  time_of_day resolution
clusters                                                
0   1.198348    1.606481    0.910549    1.348580    0.828431    0.831974    1.260882    1.641892    1.208771    1.261636    0.656250    0.859061
1   5.324421    1.442708    0.658917    1.413960    1.634722    1.147284    2.161238    1.494318    0.786127    1.718191    1.401042    0.793313
2   1.911759    1.493056    0.892624    1.787209    1.461806    0.790385    1.307070    0.733333    0.830116    1.722415    1.190232    0.594089
3   1.838731    1.211574    0.594089    1.829200    1.197682    0.594089    1.688993    1.175690    0.594089    1.227832    1.650000    1.104495
0   1.679610    1.180208    0.594089    1.697233    1.229565    0.594089    1.285936    0.820833    0.923540    1.323350    0.748333    0.918220
1   1.392903    1.408730    1.176015    1.363399    1.476389    1.197830    1.253900    1.701923    1.104157    1.676119    1.283594    0.594089
2   1.205302    1.129433    0.834921    1.899686    1.395833    0.809999    1.820913    1.251233    0.594089    1.801618    1.308559    0.797348
3   2.220466    1.282801    0.812504    1.154521    1.220721    0.816337    1.809648    1.500000    0.804246    1.281305    1.661290    1.048265
0   1.234176    1.554012    1.047034    1.735501    1.361111    0.594089    1.418779    0.881219    0.594089    1.600900    1.261667    0.594089
1   4.098913    1.361111    0.651714    1.369511    1.035417    0.943745    1.830798    1.752155    0.594089    1.253299    1.683333    1.127068
2   1.400826    0.879808    0.750322    1.243563    1.663333    1.058484    1.264153    1.722619    1.293911    1.555719    1.562500    0.766965
3   1.708665    1.472403    0.641871    2.813513    1.333333    0.834848    1.405766    1.568750    0.819914    1.494361    1.166667    0.907485
0   1.777442    1.111213    0.594089    1.793937    1.287037    1.151813    1.877160    1.264583    0.837757    1.733132    1.156310    0.594089
1   1.092618    1.285714    0.905675    1.727730    1.124199    0.766965    1.147912    0.767628    0.885132    1.142368    0.513333    0.789448
2   2.488173    1.208333    0.867353    1.317397    0.990591    0.907485    1.744708    1.166016    0.594089    1.880673    1.159910    0.774561
3   1.699597    1.482372    0.995644    1.722384    1.158333    0.594089    1.201566    1.498843    0.988628    1.414641    1.178763    1.009077
0   1.525655    1.238889    0.834485    1.940050    1.319792    0.594089    1.342455    1.608607    1.050610    1.079180    0.759615    0.848058
1   1.843363    1.286706    0.594089    1.911755    1.255435    0.908561    2.487911    1.517593    0.835542    2.337511    1.515957    0.805428
2   2.214941    1.425781    0.827254    2.695153    1.550347    0.835103    1.331540    0.808824    0.926851    1.263953    1.616319    1.207323
3   1.243146    1.531250    1.212750    1.324585    1.643817    0.993911    2.051639    1.287162    0.594089    1.954031    1.240462    0.594089

И я хочу добавить эти субтитры в колонку «Дом» и «Лето, Осень, Зима, Весна». Не обязательно находиться под именем столбца, оно может быть выше ... Я просто хочу назвать его ...!

enter image description here

1 Ответ

1 голос
/ 07 июня 2019

Вы можете создать pandas MultiIndex из произведения итераций, таких как кортежи:

df_multiindex = pd.MultiIndex.from_product(
    (('Summer', 'Autumn', 'Winter', 'Spring'), 
     ('Height', 'time_of_day', 'resolution'))
)

и назначить это MultiIndex для columns кадра данных:

df.columns = df_multiindex

Теперь вы можете индексировать свои данные с помощью:

df.Summer.resolution
# Out: [0.910549, 0.658917 ... ]

или эквивалентно с:

df[('Summer', 'resolution')]
# Out: [0.910549, 0.658917 ... ]

Или если вы хотите получить все данные 'Winter':

df['Winter']  # or with df.Winter
# Out: Height  time_of_day  resolution                                  
       1.260882     1.641892    1.208771
       2.161238     1.494318    0.786127
       1.307070     0.733333    0.830116
       ....

Если вы хотите изменить порядок MultiIndex, просто измените порядок передаваемых кортежей на pd.MultiIndex.from_product и убедитесь, что порядок соответствует вашим данным.

...