我在data-frame column name = 'Name'中追加了一列,这是一个由几个不同列串联组成的字符串。
现在,我想用某些值替换某些字符。
& -〉且< ->小于
- 〉大于' -〉这是撇号“-〉这是双引号
现在,我如何才能有效地将这个正则表达式应用于整个列。此外,我可以把它放在某个函数中,因为我需要在其他4列中应用相同的。
我试过这个
df = pd.DataFrame({'A': ['bat<', 'foo>', 'bait&'],
'B': ['abc', 'bar', 'xyz']})
df.replace({'A': r'<','A':r'>','A':r'&'}, {'A': 'less than','A': 'greater than','A': 'and'}, regex=True, inplace=True)
我期待着这个
A B
0 batless than abc
1 foogreater than bar
2 baitand xyz
但这件事发生了。
A B
0 bat< abc
1 foo> bar
2 baitand xyz
3条答案
按热度按时间aurhwmvo1#
可以将
pandas.DataFrame.apply
与自定义lambda函数一起使用,如下所示使用pandas.Series.str.replace
oxf4rvwz2#
您的替换dict有三个名为
A
的键,因此除最后一个键外,其他键都将被覆盖。请改用嵌套dict对一列进行多次替换:请参见pandi.DataFrame.replace
zkure5ic3#
您可以使用字典进行Map,但它必须如下所示:
然后,你可以将这些键编译成一个正则表达式,并按照Gonçalo Peres的回答进行操作: