Python 从字符串列中提取浮点数,并四舍五入到小数点后2位
如果我有一个列中有值的数据框Python 从字符串列中提取浮点数,并四舍五入到小数点后2位,python,pandas,floating-point,Python,Pandas,Floating Point,如果我有一个列中有值的数据框 4.5678 5 7.987.998 我只想提取小数点后2个值的数据 4.56 5 7.98 数据以字符串形式存储。任何帮助都将不胜感激。谢谢大家! def get_two_spaces(input): input_list = input.split('.') if len(input_list) >= 2: return input_list[0] + '.' + input_list[1][:2] return
4.5678
5
7.987.998
我只想提取小数点后2个值的数据
4.56
5
7.98
数据以字符串形式存储。任何帮助都将不胜感激。谢谢大家!
def get_two_spaces(input):
input_list = input.split('.')
if len(input_list) >= 2:
return input_list[0] + '.' + input_list[1][:2]
return input
我将详细介绍这里发生的事情:
使用
str.extract
+round
:
r = s.str.extract('(\d+(?:\.\d+)?)', \
expand=False).astype(float).round(2)
print(r)
0 4.57
1 5.00
2 7.99
Name: 0, dtype: float64
不幸的是,5不能像您预期的输出所描述的那样是整数,这将导致混合类型,通常不鼓励使用。另一种方法是:
import pandas as pd
df = pd.DataFrame(['4.5678','5','7.987.998'], columns=['A'])
s = df['A'].replace(to_replace='^(\d+\.\d+)\.\d+', value=r'\1', regex=True)\
.astype('float').map('{:,.2f}'.format)
print(s)
输出:
0 4.57
1 5.00
2 7.99
Name: A, dtype: object
“df”?我想你指的是数据帧?假设您正在使用熊猫?这些是重要的标签。是的。我指的是数据帧。非常感谢。会记得that@beginnerdscientist被接受的答案不能回答你的问题,它与熊猫无关。请参阅:一个数字中不能有两个“小数点符号”,因此“7.987.998”中的“.”可能是一个“分组分隔符”,其值约为8 million find返回您要查找的特殊字符第一次出现的索引,此处
这与熊猫无关,不回答问题。
import pandas as pd
df = pd.DataFrame(['4.5678','5','7.987.998'], columns=['A'])
s = df['A'].replace(to_replace='^(\d+\.\d+)\.\d+', value=r'\1', regex=True)\
.astype('float').map('{:,.2f}'.format)
print(s)
0 4.57
1 5.00
2 7.99
Name: A, dtype: object