我试图仅去除数字值,即前1或2位数字。列中的某些值包含纯字符串,而其他值包含特殊字符。参见图片获取值计数:
我尝试了多种方法:
target == toplevel_binding
没有人在工作。 dtype是对象。需要明确的是,我正在尝试仅用数字创建一个新列(以date
/ date
的形式),如果我可以将分数转换为十进制的小数,则将是奖励
答案 0 :(得分:1)
这适用于除分数,并且还允许在字符串中存在多余的数字(它只返回第一个数字序列):
In [60]: import pandas as pd
In [61]: import re
In [62]: df = pd.DataFrame([0, "6''", '7"', '8in', 'text', '3/4"', '1a3'], columns=['_Size'])
In [63]: df
Out[63]:
_Size
0 0
1 6''
2 7"
3 8in
4 text
5 3/4"
6 1a3
In [64]: def cleaning_function(row):
...: row = str(row)
...: fractions = re.findall(r'(\d+)/(\d+)', row)
...: if fractions:
...: return float(int(fractions[0][0])/int(fractions[0][1]))
...: numbers = re.findall(r'[0-9]+', str(row))
...: if numbers:
...: return numbers[0]
...: return 0
...:
In [65]: df._Size.apply(cleaning_function)
Out[65]:
0 0
1 6
2 7
3 8
4 0
5 0.75
6 1
Name: _Size, dtype: object