Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用python将数据框中的数据修剪到3个小数点_Python_Pandas_Dataframe - Fatal编程技术网

无法使用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,如何解决这个问题