如何在数据框熊猫中制作列字幕?

Posted

技术标签:

【中文标题】如何在数据框熊猫中制作列字幕?【英文标题】:How can I make column's subtitle in data frame pandas? 【发布时间】:2019-06-07 09:08:09 【问题描述】:

我正在尝试在以下数据集中写入子列名称。 我什至不知道如何称呼这个命名......我试图用谷歌搜索,但我找不到与此类似的案例。

这是当前数据帧

    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

我想添加这些字幕“房子”栏和“夏天,秋天,冬天,春天”。不一定要在列名下面,可以在上面...我只想给它起个名字...!

【问题讨论】:

根据您的示例,我仍然不清楚您想要做什么。你能更详细地解释一下你想做什么吗? 你想要一个多级索引吗?您的示例格式仍不清楚 是的,多级索引如“house”列显示和多级命名列... 【参考方案1】:

你可以从像元组这样的可迭代的产品中构造一个pandasMultiIndex

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

并将这个MultiIndex 分配给DataFrame 的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 的元组的顺序,并确保该顺序适合您的数据。

【讨论】:

以上是关于如何在数据框熊猫中制作列字幕?的主要内容,如果未能解决你的问题,请参考以下文章

如何在熊猫数据框中使用应用时创建列时间戳?

如何在熊猫数据框中查找列的 ngram 频率?

我如何在python中使用for循环制作熊猫数据框对象

如何在大熊猫数据框中显示所有列的名称?

如何在python中获取熊猫数据框的行列表? [复制]

如何检查熊猫数据框行在各个列中是不是具有某些值,可扩展性