根据列名中的匹配字符串对熊猫单元格(字符串)进行排序

Posted

技术标签:

【中文标题】根据列名中的匹配字符串对熊猫单元格(字符串)进行排序【英文标题】:Sort pandas cells (strings) according to matching string in column name 【发布时间】:2019-08-01 06:42:33 【问题描述】:

给定以下数据框:

df = pd.DataFrame('doc' : ['2739','2697','3135','896'],
               'tool' : ["system: 15", "architectur: 5" ,"tool: 10", "tool: 11"],
               'system' : ["tool: 1", "tool: 3" , "system: 5", "system: 14"],
               'architectur' : ["architectur: 4", "system: 28", "architectur: 3", "architectur: 10"])

df = df.set_index('doc')


print(df)
               tool      system      architectur
doc                                              
2739      system: 15     tool: 1   architectur: 4
2697  architectur: 5     tool: 3       system: 28
3135        tool: 10   system: 5   architectur: 3
896         tool: 11  system: 14  architectur: 10

我正在尝试根据列名中的匹配字符串重新排序字符串。

最终的目标是获得这个:

          tool      system      architectur
doc                                        
2739   tool: 1  system: 15   architectur: 4
2697   tool: 3  system: 28   architectur: 5
3135  tool: 10   system: 5   architectur: 3
896   tool: 11  system: 14  architectur: 10

提前致谢!

【问题讨论】:

【参考方案1】:

我认为你可以重新构建你的数据框

yourdf=pd.DataFrame([dict(map(tuple,[y.split(':') for y in x ])) for x in (df.values.tolist())],index=df.index)
yourdf
Out[159]: 
     architectur system tool
doc                         
2739           4     15    1
2697           5     28    3
3135           3      5   10
896           10     14   11

【讨论】:

非常感谢!除了上面的数据框,我现在还有一个带有空字符串“”以及 NaN 的数据框。重新排序时如何忽略这些值? @Peter 用他们的列名填空:

以上是关于根据列名中的匹配字符串对熊猫单元格(字符串)进行排序的主要内容,如果未能解决你的问题,请参考以下文章

对于每一行,找到与特定字符串匹配的单元格并返回列名的最后一个字符

替换熊猫数据框中部分匹配字符串的列名

从熊猫数据框单元格中的凌乱字符串中删除换行符?

计算熊猫单元格中字符串中的元素数

excel宏中的部分单元格(或字符串)匹配

将一个单元格中的字符串放入我的索引匹配 VBa 脚本的中间