python - 根据具有未知列的值类型格式化 pandas 数据框

标签 python pandas

我正在开发一个网站,该网站采用 Excel 工作表,将其转换为 pandas 数据框,然后将其发送回并进行一些计算和格式化。因此用户提供小数和数据帧:

decimals = 2
df = pd.DataFrame([["a", 1], ["b", 2.2]], columns=["name", "value"])

然后是结果需要发送回的任意尾随零/路由位置:

name    value
a    1.00
b    2.20

我已经做到了这一点,直到我开始遇到类型问题:

if decimals:
    pandas.options.display.float_format = f"{{:.{decimals}f}}".format
    df = df.astype(float)

但是当然df["name"]将无法转换:

ValueError: could not convert string to float: 'a'

如果我提前知道我可以使用 df.format()但在这种情况下,他们可能会上传由字符串、 float 或整数组成的任意矩阵。

最佳答案

要么检查当前类型,然后仅转换您想要的类型(任何数字类型或仅 float ?),或者您可以转换所有可转换的内容(请求宽恕比请求许可更容易):

for col in df.columns:
    try:
        df[col] = df[col].astype(float)
    except ValueError:
        pass

关于python - 根据具有未知列的值类型格式化 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54913926/

相关文章:

python - numpy.where 返回 int 而不是 float

python - 如何使用 pandas 根据日期列和天数列将行添加到数据框

python - 排序 Pandas DataFrame

python - Pandas :替换字符串中的子字符串

python - Pandas DataFrames 将方括号添加到特定列值

python - 删除时区信息

python - 如何获取我的元素的父元素?

python - 在一组 Pandas 数据框中提取具有最大值的行

python - 通过主机名解析mac地址

python - 如何防止在 python 退出时在 bash 中执行按键