系列的真值不明确 - Python-Docx

Truth Value of a Series is Ambiguous - Python-Docx

尝试从 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().

我发现很多关于此问题的堆栈溢出的参考资料,但不清楚我的情况如何关联,因为我的代码只有 returns 这个可重新运行的示例和实际数据中的一个结果。我已经尝试了 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.

方法document.add_paragraph 需要一个字符串(您应该已经阅读了文档)。相反,您传递了一个 pandas 系列。如果要添加多个段落,则需要一个循环。

paragraphs = df.loc[df.B=='c', 'A'].astype('str').values
for paragraph in paragraphs:
    document.add_paragraph(paragraph)