我需要用映射字典替换columnb值,但我不能拆分这些列,并将其和所有的内容映射回相同的位置,这将是一项繁琐的任务。在这方面任何帮助都会很好。
df:
ColumnA ColumB
0 Rick 3-1,4-5,9-8
1 Tim 6-3,1-2,1.3,5.8,7-9
Mapping_dict= {'3-1':'1','4-5':2,'9-8':3,
'6-3':4,'1-2':5,'1.3':6,'5.8':'7','7-9':'8'}
输出:
ColumnA ColumB
0 Rick 1,2,3
1 Tim 4,5,6,7,8
发布于 2021-02-07 14:49:14
您可以使用熊猫应用函数来映射映射字典的原始值:
import pandas as pd
Mapping_dict= {'3-1':'1','4-5':2,'9-8':3,'6-3':4,'1-2':5,'1.3':6,'5.8':'7','7-9':'8'}
d = {'ColumnA': ['Rick', 'Tim'], 'ColumB': ['3-1,4-5,9-8', '6-3,1-2,1.3,5.8,7-9']}
df = pd.DataFrame(data=d)
df['ColumB'] = df['ColumB'].apply(lambda x: [Mapping_dict[y] for y in x.split(',')] )
发布于 2021-02-07 15:02:11
假设Mapping_dict
包含作为字符串的所有值,则可以使用,它接受替换字典作为参数,然后可以用于替换ColumB
中的值。
df['ColumB'] = df['ColumB'].replace(Mapping_dict, regex=True)
>>> df
ColumnA ColumB
0 Rick 1,2,3
1 Tim 4,5,6,7,8
发布于 2021-02-07 15:57:10
ColumnA=['Rick','Tim']
ColumnB=['3-1,4-5,9-8','6-3,1-2,1.3,5.8,7-9']
df=pd.DataFrame({'columnA':ColumnA,'columnB':ColumnB})
Mapping_dict= {'3-1':'1','4-5':2,'9-8':3,'6-3':4,'1-2':5,'1.3':6,'5.8':'7','7-9':'8'}
def lookup(columnString):
elements=columnString.split(",")
mylist=[str(Mapping_dict[element]) for element in elements]
retVal=",".join(mylist)
return retVal
df['columnB']=df['columnB'].apply(lambda x: lookup(x))
print(df)
output:
columnA columnB
0 Rick 1,2,3
1 Tim 4,5,6,7,8
https://stackoverflow.com/questions/66089086
复制相似问题