我正在开发一个网站,该网站采用 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/