Python 映射后的数字格式?

Python 映射后的数字格式?,python,pandas,dictionary,replace,Python,Pandas,Dictionary,Replace,我有一个带有数字列的数据框,例如: CompteNum 100 200 300 400 500 以及一个将所有这些数字映射到其他数字的文件,我将其导入python并转换为字典: {100: 1; 200:2; 300:3; 400:4; 500:5} 我在数据框中创建了第二列,以df number+dict number的格式将两个数字组合在一起:从100到1001,依此类推 ## dictionary accounts = pd.read_excel("mapping-accounts.x

我有一个带有数字列的数据框,例如:

CompteNum
100
200
300
400
500
以及一个将所有这些数字映射到其他数字的文件,我将其导入python并转换为字典:

{100: 1; 200:2; 300:3; 400:4; 500:5}
我在数据框中创建了第二列,以df number+dict number的格式将两个数字组合在一起:从100到1001,依此类推

## dictionary
accounts = pd.read_excel("mapping-accounts.xlsx")
accounts = accounts[['G/L Account #','FrMap']] 
accounts = accounts.set_index('G/L Account #').to_dict()['FrMap']
## data frame --> CompteNum is the Number Column
df['CompteNum'] = df['CompteNum'].map(accounts1).astype(str) + df['CompteNum'].astype(str)
问题是我的输出是100.01.0而不是1001,这会在输出excel文件中创建额外的手动工作。我试过:

df['CompteNum'] = df['CompteNum'].str.replace('.0', '')


但它不会删除所有的零,我希望删除其他的零。有什么建议吗?

映射后的非匹配值缺少值,可能的解决方案是:

print (df)
   CompteNum
0        100
1        200
2        300
3        400
4        500
5         40

accounts1  = {100: 1, 200:2, 300:3, 400:4, 500:5}

s = df['CompteNum'].astype(str)
s1 = df['CompteNum'].map(accounts1).dropna().astype(int).astype(str)
df['CompteNum'] = (s + s1).fillna(s)
print (df)
  CompteNum
0      1001
1      2002
2      3003
3      4004
4      5005
5        40
您的解决方案应该更改为replace by regex-
$
以转义
作为字符串结尾,因为特殊的regex字符(regex any char):


map
之后的非匹配值存在缺少值的问题,可能的解决方案是:

print (df)
   CompteNum
0        100
1        200
2        300
3        400
4        500
5         40

accounts1  = {100: 1, 200:2, 300:3, 400:4, 500:5}

s = df['CompteNum'].astype(str)
s1 = df['CompteNum'].map(accounts1).dropna().astype(int).astype(str)
df['CompteNum'] = (s + s1).fillna(s)
print (df)
  CompteNum
0      1001
1      2002
2      3003
3      4004
4      5005
5        40
您的解决方案应该更改为replace by regex-
$
以转义
作为字符串结尾,因为特殊的regex字符(regex any char):