无法使用python将数据框中的数据修剪到3个小数点
我有一个如下所示的数据帧无法使用python将数据框中的数据修剪到3个小数点,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个如下所示的数据帧 [8.01427, 47.0002] [8.01427, 47.0002] [8.01427, 47.0002] [8.01427, 47.0002] [8.01427, 47.0002] 预期产量 8.014:47.000 8.014:47.000 8.014:47.000 我的代码 def func(y,n): if y < 0 : return "%0.2f" % (-(y * 10 ** n // -1 / 10
[8.01427, 47.0002]
[8.01427, 47.0002]
[8.01427, 47.0002]
[8.01427, 47.0002]
[8.01427, 47.0002]
预期产量
8.014:47.000
8.014:47.000
8.014:47.000
我的代码
def func(y,n):
if y < 0 :
return "%0.2f" % (-(y * 10 ** n // -1 / 10 ** n))
else :
return "%0.2f" % (y * 10 ** n // 1 / 10 ** n)
DataF.loc[:, ('param')] = DataF['geo'].apply (lambda x: ':'.join ( [func ( y, 3 ) for y in x] ) )
定义函数(y,n):
如果y<0:
返回“%0.2f”%((y*10**n//-1/10**n))
其他:
返回“%0.2f%”(y*10**n//1/10**n)
DataF.loc[:,('param')]=DataF['geo'].apply(lambda x:':').join([func(y,3)表示x中的y]))
错误
“您的
'geo'
列似乎包含字符串”[8.01427,47.0002']
。让我们试试:
DataF['param'] = DataF['geo'].str.replace('(\[)(\d+\.\d{,3})\d*, (\d+\.\d{,3})\d*(\])',
r'\2:\3')
输出:
geo param
0 [8.01427, 47.0002] 8.014:47.000
1 [8.01427, 47.0002] 8.014:47.000
2 [8.01427, 47.0002] 8.014:47.000
3 [8.01427, 47.0002] 8.014:47.000
4 [8.01427, 47.0002] 8.014:47.000
代码中的
func
是什么?您的数据类型是字符串类型,还是浮点列表,还是字符串列表?@QuangHoang,在中添加了func
question@QuangHoang它的数据类型('O')是您的问题:如果y<0
,您的数据似乎是字符串,而不是数字类型。@QuangHoang,如何解决这个问题