【问题标题】:Pandas - convert header name in tuple format to a stringPandas - 将元组格式的标题名称转换为字符串
【发布时间】:2018-10-17 02:46:32
【问题描述】:

在组内计算百分位数后,标题名称为元组格式,如[('A', 0.5), ('A',0.9)...('Z',0.9)]

期望的输出应该是:

['P50 A', 'P90 A', ...'P90 Z']

基本上,我想将小数乘以 100 以获得百分比并将其移动到前面,在每个字段中附加一个字母“P”。

我觉得我应该像这里建议的那样使用地图或加入:How to change the columns name from a tuple to string?

但不知道如何处理细节。

【问题讨论】:

  • df.columns=df.columns.map('{0[0]} {0[1]}'.format)
  • 您能先说明一下您是如何想到这些的吗?看起来你在这里做了一些“奇怪”的事情。
  • df = df[值 + grouper].groupby(grouper).quantile(nth_percentile); df = df.unstack(); df = pd.DataFrame(df.to_records())

标签: python pandas


【解决方案1】:

这也有效:

original_names = [('A', 0.5), ('A',0.9),('Z',0.9)]
new_names = ['P'+str(int(100*y)) + ' ' + x for x,y in original_names]

结果:['P50 A', 'P90 A', 'P90 Z']

【讨论】:

  • 或使用 f 字符串:new_names = [f'P{int(100*y)} {x}' for x,y in original_names]
【解决方案2】:

当前列名:

col_name = [('A', 0.5), ('A',0.9),('Z',0.9)]

所需的列名:

desired_col_named = [f'P{x[1]*100} {x[0]}' for x in col_name]

假设你有支持 f 字符串的 python 3.6。

【讨论】:

    猜你喜欢
    • 2015-04-02
    • 2012-12-25
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2020-06-28
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多