python - 为什么使用 str.format() 时会给出两个不同的结果?
问题描述
我正在尝试从 yahoo Finance 中提取最大收盘价及其相应日期,并在图表上注释该点。代码如下所示。
ymax = tencents[['Close']].max()
ymax
#result: Close 474.600006
dtype: float64
texty= "y={:.3f}".format(ymax)
texty
#result: unsupported format string passed to Series.__format__
#expected: 474.60
xmax= tencents['Close'].idxmax()
#result: "x=.strftime('2018-01-23)"
textx= "x={:.strftime('%Y-%m-%d)}".format(xpos)
textx
result: "x=.strftime('2018-01-23)"
当我将两者结合时:
text = "x={:.strftime('%Y-%m-%d)},y={:} ",format(xpos,ymax)
text
#result: format() argument 2 must be str, not Series
#expected: (2018-01-23, 474.60)
解决方案
注意逗号 ( ,
)。在 python 中,逗号通常被读取为元组。
因此,尽管您的代码是有效的,但这并没有按照您的想法执行:
text = "x={:.strftime('%Y-%m-%d)'},y={:} ",format(xmax, ymax)
你的意思是:
text = "x={:.strftime('%Y-%m-%d)'},y={:} ".format(xmax, ymax)
from datetime import datetime
ymax = 474.600006
texty= "y={:.3f}".format(ymax)
print(texty)
xmax= datetime.today()
textx= "x={:.strftime('%Y-%m-%d)}".format(xmax)
print(textx)
# Here you had `,`format(xpos, ymax)
text = "x={:.strftime('%Y-%m-%d)'},y={:} ".format(xmax, ymax)
print(text)
# result: "x=.strftime('2018-01-23)"
推荐阅读
- java - couchbase lite join 语句返回的文档比预期的多得多
- .htaccess - 如何避免在 htaccess 中出现错误代码 410 中的重定向
- autodesk-forge - 带 Forge 的房间
- mysql - 如何在数据库表列中搜索不可见字符?
- python - 在 python 自动化中完成的任务
- sql - 如何在 BigQuery 中创建临时表
- linux - ARM 的交叉编译
- javascript - iPad Safari:如何恢复
- curl - 在 curl 请求中,终端在 & 符号(&)周围抛出错误
- .net - 具有不同 api 客户端的 .Net Web 应用程序