【发布时间】:2021-12-28 05:36:59
【问题描述】:
我正在尝试根据一系列 if 条件在 Pandas DataFrame 中添加和填充一列。
我的代码是这样的
df['E'] = (('Text1;' if df['A'] else '') + ('Text2;' if df['B'] else '')) + ('Text3;' if df['C'] else '')
数据框看起来像
A B C D
TRUE FALSE FALSE 4
FALSE TRUE TRUE 7
FALSE FALSE FALSE 1
编译器错误提示真值不明确,我尝试按照 SO 的建议使用括号,但无法使其正常工作。
我已经围绕这个错误检查了 SO 上的许多其他线程,但没有一个指向这个问题。
谢谢
【问题讨论】:
-
你检查了很多你看到的线程 np.where? np.选择?你用它写什么?或者你有没有为此尝试过矩阵乘法
-
感谢@athing 的评论,我检查了我搜索的那些,但我无法弄清楚如何根据 np.select 中的多个 if 连接字符串你能告诉我我的方法有什么问题吗?
-
如果您添加数据框以便其他人可以重现错误也会有所帮助
-
真相价值不明确是你的方式有什么问题,有很多答案为什么它是错误的。有些人建议 np.select 等。我认为在最坏的情况下,您在“检查许多 therads”之后在 np.select 中写入 8=2^3 可能性。有一种矩阵乘法的方式让我试着写一个答案
-
你的数据框真的像这样吗?因为所有大写字母 TRUE 和 FALSE 它们肯定不是布尔值...
标签: python python-3.x pandas dataframe lambda