繁体   English   中英

如何按字母+数字顺序按列对表格可视化进行排序?

[英]How to sort table visualization by column in alphabetical + numerical order?

我已将数据加载到 Power BI(通过“获取数据”),它看起来像这样:

在此处输入图像描述

请注意,Subworkload 列在此处按字母和数字顺序正确排序为“R、W2、W3、....W11”。

我只想通过在 Power BI 报告页面中通过表格可视化显示此表格来做简单的事情,但是 PBI 以错误的方式对列进行了排序。 见下文:

在此处输入图像描述

如何以正确排序的方式将其放回原处?

如果不可能,我可以编写 python 代码进行可视化以将表格按原样放在报告上吗? 我只想做简单的事情来呈现报告表,但是 PBI 让它变得如此困难。

Powerbi也是microsoft product ,所以我认为对于类似于 Explorer 的排序,它也使用 API StrCmpLogicalW ( ) 进行这种排序(称为“ natural sort order ”)。 一个很好的解释可以在这里找到。

import numpy as np
import pandas as pd
import re


df = pd.DataFrame({
    'Subworkload': ['R', 'W10', 'W11', 'W2', 'W3', 'W4', 'W5', 'W6', 'W7', 'W8', 'W9'],
    'Iteration': np.zeros(11),
    'Parameters': ['Buffer_size=Default_Num_Threads=1' for i in range(11)] 
})

def sort_nicely( l ):
    """ Sort the given list in the way that humans expect."""
    convert = lambda text: int(text) if text.isdigit() else text
    alphanum_key = lambda key: [ convert(c) for c in re.split('([0-9]+)', key) ]
    l.sort( key=alphanum_key )

    return l

val = sort_nicely(list(df['Subworkload']))
print(val)

: Output:

'R', 'W2', 'W3', 'W4', 'W5', 'W6', 'W7', 'W8', 'W9', 'W10', 'W11']

但根据StrCmpLogicalW output 应该是:

'R', 'W10', 'W11', 'W2', 'W3', 'W4', 'W5', 'W6', 'W7', 'W8', 'W9']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM