给定以下 pandas df:
import pandas as pd
df = pd.DataFrame({'1' : ['title1','R','R','R'],
'2' : ["title2", "NR" ,"NR", "NR"],
'3' : ["title3", "R" , "NR", "NR"],
'4' : ["title4", "R", "NR", "R"]})
还有一个更长的字符串列表:
List = ['2633', 'title1', '3327', 'title2', '18', 'title3', '5', 'title4', '5835', 'title5', '394', 'title6']
在 python 环境中是否有可能将 df 中的标题替换为字符串列表中每个标题对之前的数字。
预期输出:
dfnew = pd.DataFrame({'1' : ['2633','R','R','R'],
'2' : ["3327", "NR" ,"NR", "NR"],
'3' : ["28", "R" , "NR", "NR"],
'4' : ["5", "R", "NR", "R"]})
dfnew
1 2 3 4
0 2633 3327 28 5
1 R NR R R
2 R NR NR NR
3 R NR NR R
我假设 regex
可以解决问题,但我不知道如何从列表中访问正确的数字。
提前感谢您的帮助!
最佳答案
从偶数和奇数索引创建一个dict
作为键值对,并使用replace
将title
替换为numbers
:
d = {k:v for k,v in zip(List[1::2], List[::2])}
print(df.replace(d))
输出:
1 2 3 4
0 2633 3327 18 5
1 R NR R R
2 R NR NR NR
3 R NR NR R
解释
List[1::2]
将为您提供列表中奇数索引处的元素 ['title1', 'title2', 'title3', 'title4', 'title5' , 'title6']
和
List[::2]
将为您提供列表 ['2633', '3327', '18', '5', '5835', '394']
关于python - 在列表中的对字符串之前用数字替换 Pandas 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55512416/