首页 > 解决方案 > Python Pandas - 检测列和数字格式

问题描述

我使用 Pandas 来管理 csv。不幸的是,我有使用“逗号”作为小数分隔符的数字列:

埃斯。50,12

当我使用 convert_dtypes() 函数时,这些列被转换为字符串而不是数字,因此排序函数无法正常工作。

有没有办法指定数据集的“数字格式”,所以每个数字都被认为是 NNNN,DD 而不是 NNNN.DD

例子:

| Gross Amount | Item Number|
-----------------------------
|52,50         |   1       |
|498,00        |   2       |
|10,01         |   3       |
|1,74          |   4       |
|518,04        |   5       |
|2,10          |   6       |

自动检测返回:

Gross Amount     string
Item Number       Int64

所以当我按“总金额”排序时,它会排序字符串而不是数字,例如,“10,01”在“2,10”之前打印

标签: pythonpandas

解决方案


假设调用 DataFrame 时df。您可以使用下面的代码。

代码:

for column in df.columns:
    if pd.api.types.is_string_dtype(df[column]):
        try:
            df[column] = df[column].str.replace(',', '.').astype('float')
        except:
            pass

推荐阅读