尝试从pandas数据框中获取一个值,然后使用python-docx将其插入文档中:
import docx
from docx.shared import Inches
import numpy as np
import pandas as pd
df = pd.DataFrame({'A':(1,2,3,4,5),'B':('a','b','c','d','e')})
document = docx.Document()
p = document.add_paragraph(df.loc[df.B=='c', 'A'].astype('str'))
但我收到此错误:
The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我在堆栈溢出中发现了很多对此问题的引用,但由于我的代码在此可重新运行的示例和实际数据中均仅返回一个结果,因此不清楚我的处境如何。我尝试了df.loc[df.B=='c', 'A']
的几种变体,但结果没有不同。
编辑:下面引用的可能重复项与逻辑参数有关。就我而言,问题是我试图使用序列代替值。 DYZ在下面概述了解决方案。
我的python-docx似乎不喜欢float数据类型,因此我尝试转换为字符串,但自然无法解决问题。
编辑:python-docx仅需要一个字符串。
#This works:
p = document.add_paragraph('1')
#This doesn't:
p = document.add_paragraph(1)
#however the error is unrelated to the issue highlighted above.
如果有人可以向我强调我做错了什么,我将不胜感激。
我今天早上安装了python-docx,所以它是最新版本,即python-docx-0.8.10。
让我知道是否需要其他信息。
答案 0 :(得分:0)
方法document.add_paragraph
需要一个字符串(您应该已经阅读了文档)。相反,您通过了熊猫系列。如果要添加多个段落,则需要一个循环。
paragraphs = df.loc[df.B=='c', 'A'].astype('str').values
for paragraph in paragraphs:
document.add_paragraph(paragraph)