gpt4 book ai didi

python - 按源优先级查找替换名称(python)

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:04 25 4
gpt4 key购买 nike

我有一个文件,其中包含许多不同的名称不佳的助记符(“原始助记符”)。我需要将这些命名不佳的助记符的名称更改为通用名称(“通用助记符”)。我相信我应该用字典来做到这一点,但我并不肯定。

这是数据示例(您可以从下面的代码创建数据框):

originalMnemonic = ['ABCGR1','ABCGR2','ABCGR3','ABCGR4','ABCRT1','ABCRT2','ABCRT3','ABCRT4']
generalMnemonic = ['GR','GR','GR','GR','RT','RT','RT','RT']
sourcePriority = [2,3,4,5,1,2,3,4]

curveDf = pd.DataFrame(
{'originalMnemonic': originalMnemonic,
'generalMnemonic': generalMnemonic,
'sourcePriority': sourcePriority
})

我给每个“原始助记符”一个“通用助记符”名称,我还提供了一个源优先级。

我将如何查找“原始助记符”的名称并将其替换为“通用助记符”名称。按照源优先级顺序。 (即,如果源优先级 1 存在,则使用 1。如果 1 不存在,则使用源优先级 2。)

这是我想要更改的文件的示例:

curveName = ['ABCGR1', 'ABCGR2', 'ABCGR3', 'ABCGR4', 'ABCRT1', 'ABCRT2', 'ABCRT3', 'ABCRT4']

curveDesc = ['I only want this name to be GR','dont change name','dont change name','dont change name',
'I only want this name to be RT','dont change name','dont change name','dont change name']

changeDf = pd.DataFrame(
{'curveName': curveName,
'curveDesc': curveDesc
})

“curveName”应按源优先级顺序从“curveDF”更改为“常规助记符”名称。

这是我想要的输出:(注意 ABCGR1 如何更改为 GR(它的源优先级为 2,ABCRT1 已更改为 RT(它的源优先级为 1)

originalMnemonic = ['GR','ABCGR2','ABCGR3','ABCGR4','RT','ABCRT2','ABCRT3','ABCRT4']
generalMnemonic = ['GR','GR','GR','GR','RT','RT','RT','RT']
sourcePriority = [2,3,4,5,1,2,3,4]

outputDf = pd.DataFrame(
{'originalMnemonic': originalMnemonic,
'generalMnemonic': generalMnemonic,
'sourcePriority': sourcePriority
})
outputDf

任何帮助我走上正轨的帮助都是值得赞赏的。

最佳答案

更新:

来源DF:

In [141]: curveDf
Out[141]:
generalMnemonic originalMnemonic sourcePriority
0 GR ABCGR1 2
1 GR ABCGR2 3
2 GR ABCGR3 4
3 GR ABCGR4 5
4 RT ABCRT1 1
5 RT ABCRT2 2
6 RT ABCRT3 3
7 RT ABCRT4 4

解决方案:

In [142]: curveDf.loc[curveDf.groupby('generalMnemonic', as_index=0) \
.sourcePriority.idxmin(), \
'originalMnemonic'] = curveDf.generalMnemonic

In [143]: curveDf
Out[143]:
generalMnemonic originalMnemonic sourcePriority
0 GR GR 2
1 GR ABCGR2 3
2 GR ABCGR3 4
3 GR ABCGR4 5
4 RT RT 1
5 RT ABCRT2 2
6 RT ABCRT3 3
7 RT ABCRT4 4

说明:

In [140]: curveDf.groupby('generalMnemonic', as_index=0).sourcePriority.idxmin()
Out[140]:
0 0
1 4
dtype: int64

旧答案:

IIUC 你可以这样做:

In [11]: curveDf.loc[curveDf.sourcePriority==1, 'originalMnemonic'] = curveDf.generalMnemonic

In [12]: curveDf
Out[12]:
generalMnemonic originalMnemonic sourcePriority
0 GR GR 1
1 GR ABCGR2 2
2 GR ABCGR3 3
3 GR ABCGR4 4
4 RT RT 1
5 RT ABCRT2 2
6 RT ABCRT3 3
7 RT ABCRT4 4

关于python - 按源优先级查找替换名称(python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41481642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com