我有两个关于清理熊猫中数据的问题。
如果我有一列的值如下:
1 st ST,
10 th AV,
Main st
我想如下进行更改:
1ST ST,
10TH AV,
MAIN ST
所有字符串都大写,如果我们有整数,则将后面的字符串附加在一起(无空格)
我应该如何在pandas
中这样做?
答案 0 :(得分:2)
将Series.str.upper
和Series.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()
-将字符串转换为大写。
答案 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