8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

使用欧洲分隔符将列的值转换为数字

Micael Levi 1月前

69 0

考虑此示例数据框 df_1:index value_11 -3.570,002 +552,763 -1,014 -100.234,01其中浮点值是有符号的,并且使用欧洲分隔符/分隔符

考虑以下示例数据框 df_1

index    value_1

1 -3.570,00 2 +552,76 3 -1,01 4 -100.234,01

其中浮点值是有符号的,并且使用了欧洲分隔符/分隔符:

  • 小数点的 , 逗号
  • . 位数字

我想将此列的值转换为浮点数。如果我尝试 此处的

# tag 1
df_1['value_1'] = df_1['value_1'].apply(pd.to_numeric)

我收到错误信息:

ValueError:无法解析位置 <...> 处的字符串 \'<...>\'

这里的 说明

# tag 2
df_1['value_1'] = df_1['value_1'].apply(lambda x: x.replace('.',''))
df_1['value_1'] = df_1['value_1'].apply(lambda x: x.replace(',','.'))

然而, # tag 1 之前

C:\Users\userName\AppData\Local\Temp\ipykernel_11992\3059588848.py:2: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
...

尽管这种解决方法可以完成工作,但我想知道是否有更规范的方法来实现我想要的效果而不会收到任何警告。

帖子版权声明 1、本帖标题:使用欧洲分隔符将列的值转换为数字
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Micael Levi在本站《string》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 如果您正在读取 CSV,则可以使用 decimal thousands 参数:

    df = pd.read_csv(..., decimal=',', thousands='.')
    

    来自 文档 :

    千位:str,可选

    千位分隔符。

    十进制: str ,默认'.'

    识别为小数点的字符(例如,对欧洲数据使用​​‘,’)。

    感谢 atomh33ls 在另一个问题上发布了几乎完全相同的内容。

返回
作者最近主题: