将pandas python中列值中的字符串的整数+字符串更改为大写

时间:2019-04-16 10:46:58

标签: python python-3.x pandas

我有两个关于清理熊猫中数据的问题。

如果我有一列的值如下:

1 st ST,
10 th AV,
Main st

我想如下进行更改:

1ST ST,
10TH AV,
MAIN ST

所有字符串都大写,如果我们有整数,则将后面的字符串附加在一起(无空格)

我应该如何在pandas中这样做?

3 个答案:

答案 0 :(得分:2)

Series.str.upperSeries.str.replace与正则表达式一起使用:

df['col'] = df['col'].str.upper().str.replace(r'(\d+)\s+(TH|ST|ND|RD)\b', r'\1\2')

print(df['col'])

0     1ST ST,
1    10TH AV,
2     MAIN ST
Name: col, dtype: object

答案 1 :(得分:2)

如果要删除数字后的任何空格并大写所有字母,可以使用:

df['column'] = [re.sub('(\\d)\\s+', '\\1', (x.upper())) for x in df['column']]

说明:

1)re.sub()-用正则表达式替换文本。

2)(\\d)\\s+-在捕获组中选择一个数字,然后选择一个或多个空格。

3)\\1-仅将所选内容替换为选定的数字,从而消除了空白。

4)x.upper()-将字符串转换为大写。

Test online!

答案 2 :(得分:1)

您可以使用熊猫套用功能:

import re

df = pd.DataFrame({'col': ['1 st ST', '10 th AV', 'Main st']})
df.col.apply(lambda x: re.sub('(\\d)\\s+', '\\1', x).upper())

将导致:

0     1ST ST
1    10TH AV
2    MAIN ST
Name: col, dtype: object