首页 > 解决方案 > 如何在 Pandas 中打印浮点数?

问题描述

我想打印这样的东西:

print("Average age is: " +  round(data.loc[data["School1"]==1]["Age"].mean(),2)

不过我有一个TypeError:can only concatenate str (not "float") to str

我的浮点数,意思是round(data.loc[data["School1"]==1]["Age"].mean(),2)= 15.23

我怎样才能打印它?

标签: pythonstringpandasprinting

解决方案


该错误告诉您它不知道如何连接(连接) afloat和 a string。换句话说,它不知道添加 ( +) astring和 a的含义float

val=round(data.loc[data["School1"]==1]["Age"].mean(),2)
print("float value: {}".format(val))

或者

val=data.loc[data["School1"]==1]["Age"].mean()
print("float value: %.2f" % val) 

两者都应该工作。如果您仍然卡住,我可以测试并提供更多信息,但示例data对象会很有用。

笔记:

  • val不需要中间体,但我想保持print语句干净。
  • %.2f浮点数限制为 2 位小数,因此round()在第二种方法中不需要调用。
  • 上述两种方法都可以支持多次插入:
    • 例如:print("{} {}".format("hello","world"))将打印hello world.
    • 第二种方法看起来像print("%s %s" % ("hello", "world"))
  • %s对于第二种方法,除了(string) 和%f(float)之外,还有其他选择。

您可能会发现https://pyformat.info/有帮助,因为它更详细地讨论了这两种方法。

您需要的最少更改是用将其转换float为的str()方法包装您floatstring(请参阅本段下方的代码块)。完成后,python 知道如何使用+运算符连接两个字符串。它会起作用,但我认为它会使事情变得混乱,尤其是当您将多个变量转换并连接成一个字符串变量或打印语句时。

print("Average age is: " +  str(round(data.loc[data["School1"]==1]["Age"].mean(),2)))

推荐阅读