如果我的数据框中包含值
4.5678
5
7.987.998
我想在小数
之后仅提取2个值的数据4.56
5
7.98
数据存储为字符串。任何帮助将不胜感激。谢谢 !
答案 0 :(得分:2)
print(s)
0 4.5678
1 5
2 7.987.998
Name: 0, dtype: object
print(type(s))
Out[152]: pandas.core.series.Series
使用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不能像您预期的输出所描述的那样是一个整数,这会导致混合类型并且通常不鼓励。
答案 1 :(得分:0)
def get_two_spaces(input):
input_list = input.split('.')
if len(input_list) >= 2:
return input_list[0] + '.' + input_list[1][:2]
return input
我会分解这里发生的事情:
答案 2 :(得分:0)
str = "7.987.998"
ind = str.find('.')
if ind > 0:
res = str[:ind+3]
答案 3 :(得分:0)
另一个 pandas 方法:
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