根据具有未知列的值类型格式化熊猫数据框

时间:2019-02-27 20:26:34

标签: python pandas

我正在一个使用Excel工作表的网站上工作,将其转换为熊猫数据框,并通过一些计算和格式化将其发送回。因此,用户可以提供小数和数据帧:

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(),但是在这种情况下,他们可能会上传由字符串,浮点数或整数组成的任意矩阵。

1 个答案:

答案 0 :(得分:1)

要么检查当前类型,然后仅转换所需的类型(任何数字类型还是仅浮点数?),或者就可以转换所有可转换的内容(更容易要求宽恕而不是获得许可):

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