根据列名中的匹配字符串对熊猫单元格(字符串)进行排序
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 用他们的列名填空:以上是关于根据列名中的匹配字符串对熊猫单元格(字符串)进行排序的主要内容,如果未能解决你的问题,请参考以下文章