Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.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 将数据帧货币转换为数字_Python_Pandas_Dataframe - Fatal编程技术网

Python 将数据帧货币转换为数字

Python 将数据帧货币转换为数字,python,pandas,dataframe,Python,Pandas,Dataframe,我知道还有其他类似的话题,但我都试过了,没有成功。 我正在读一个dataframa,其中一列(“总额”)充满了货币(如2553.00美元) 以下是我在数据框中的阅读方式: columns=['Client','year','month','traffic','Source','Leads','Sold','Gross'] return pd.read_csv(filename,thousands=',',decimal=".", index_col='Client',p

我知道还有其他类似的话题,但我都试过了,没有成功。 我正在读一个dataframa,其中一列(“总额”)充满了货币(如2553.00美元)

以下是我在数据框中的阅读方式:

columns=['Client','year','month','traffic','Source','Leads','Sold','Gross']             
return pd.read_csv(filename,thousands=',',decimal=".", index_col='Client',parse_dates=True,encoding = "ISO-8859-1",usecols=columns)
我现在尝试了几种将货币列转换为浮动的方法,以便使用它们进行计算,例如:

data = data.apply(lambda x: x.str.replace(',','.'))
data['Gross'] = data['Gross'].fillna(0.0).str.replace(r'[$,-]', '').astype('float')
这给了我以下错误:

Traceback (most recent call last):
  File "C:\Users\Laila\Desktop\tool5.py", line 136, in <module>
    data=getData()
  File "C:\Users\Laila\Desktop\tool5.py", line 123, in getData
    data = data.apply(lambda x: x.str.replace(',','.'))
  File "C:\Users\Laila\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\frame.py", line 4877, in apply
    ignore_failures=ignore_failures)
  File "C:\Users\Laila\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\frame.py", line 4973, in _apply_standard
    results[i] = func(v)
  File "C:\Users\Laila\Desktop\tool5.py", line 123, in <lambda>
    data = data.apply(lambda x: x.str.replace(',','.'))
  File "C:\Users\Laila\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\generic.py", line 3610, in __getattr__
    return object.__getattribute__(self, name)
  File "C:\Users\Laila\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\accessor.py", line 54, in __get__
    return self.construct_accessor(instance)
  File "C:\Users\Laila\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\strings.py", line 1910, in _make_accessor
    raise AttributeError("Can only use .str accessor with string "
AttributeError: ('Can only use .str accessor with string values, which use np.object_ dtype in pandas', 'occurred at index year')
[Finished in 7.4s with exit code 1]
[shell_cmd: python -u "C:\Users\Laila\Desktop\crmtool5.py"]
[dir: C:\Users\Laila\Desktop]
[path: C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Users\Laila\AppData\Local\Programs\Python\Python36-32\Scripts\;C:\Users\Laila\AppData\Local\Programs\Python\Python36-32\;C:\Users\Laila\AppData\Local\Microsoft\WindowsApps;]
给我一个类似的错误:

Traceback (most recent call last):
  File "C:\Users\Laila\Desktop\crmtool5.py", line 136, in <module>
    data=getData()
  File "C:\Users\Laila\Desktop\crmtool5.py", line 121, in getData
    data[['Gross']] = data[['Gross']].fillna(0.0).astype('float')
  File "C:\Users\Laila\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\util\_decorators.py", line 118, in wrapper
    return func(*args, **kwargs)
  File "C:\Users\Laila\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\generic.py", line 4004, in astype
    **kwargs)
  File "C:\Users\Laila\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\internals.py", line 3462, in astype
    return self.apply('astype', dtype=dtype, **kwargs)
  File "C:\Users\Laila\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\internals.py", line 3329, in apply
    applied = getattr(b, f)(**kwargs)
  File "C:\Users\Laila\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\internals.py", line 544, in astype
    **kwargs)
  File "C:\Users\Laila\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\internals.py", line 625, in _astype
    values = astype_nansafe(values.ravel(), dtype, copy=True)
  File "C:\Users\Laila\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pandas\core\dtypes\cast.py", line 703, in astype_nansafe
    return arr.astype(dtype)
ValueError: could not convert string to float: 
[Finished in 7.9s with exit code 1]
[shell_cmd: python -u "C:\Users\Laila\Desktop\crmtool5.py"]
[dir: C:\Users\Laila\Desktop]
[path: C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Users\Laila\AppData\Local\Programs\Python\Python36-32\Scripts\;C:\Users\Laila\AppData\Local\Programs\Python\Python36-32\;C:\Users\Laila\AppData\Local\Microsoft\WindowsApps;]

关于如何解决这个问题有什么建议吗?

您正试图用
替换
,但结果字符串无法转换为float。例如,2.553.00包含两个点,当将其转换为浮点时,将引发异常

将代码更改为:

data['Gross'] = data['Gross'].fillna(0.0).str.replace('[$,]', '').astype('float')

您正试图用
替换
,但结果字符串无法转换为float。例如,2.553.00包含两个点,当将其转换为浮点时,将引发异常

将代码更改为:

data['Gross'] = data['Gross'].fillna(0.0).str.replace('[$,]', '').astype('float')

很难知道是什么导致了
值错误:在
.astype('float')
中无法将字符串转换为float(第二个示例),而不查看数据。您能否隔离并共享运行此代码的一小块数据。很难知道是什么导致了
ValueError:无法在
.astype('float')
中将字符串转换为float
(第二个示例)而看不到您的数据。您可以隔离并共享运行此代码的一小块数据吗?然后,我遇到了负货币问题(ValueError:无法将字符串转换为float:“-”)@lailaverments:听起来其中一行只包含一个“-”,没有数字。您可以通过在
astype('float')
之前执行
replace('-$,'0.0')
将其替换为0。然后我就遇到了负货币问题(ValueError:无法将字符串转换为float:'-')@lailaverments:听起来其中一行只包含一个'-',没有数字。您可以通过在
astype('float')
之前执行
replace('-$,'0.0')
将其替换为0。
data['Gross'] = data['Gross'].fillna(0.0).str.replace('[$,]', '').astype('float')