我需要根据 Pandas 数据框中另一列的值设置一列的值。这是逻辑:
if df['c1'] == 'Value':
df['c2'] = 10
else:
df['c2'] = df['c3']
我无法让它做我想做的事,即简单地创建一个具有新值的列(或更改现有列的值:任何一个都适合我)。
如果我尝试运行上面的代码,或者将其编写为函数并使用 apply 方法,我会得到以下信息:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
原文由 NLR 发布,翻译遵循 CC BY-SA 4.0 许可协议
一种方法是使用索引
.loc
。例子
在没有示例数据框的情况下,我将在这里制作一个:
Assuming you wanted to create a new column
c2
, equivalent toc1
except wherec1
isValue
, in which case, you would like将其分配给 10:首先,您可以创建一个新列
c2
,并将其设置为c1
,使用以下两行之一(它们基本上做同样的事情):然后,使用
.loc
找到c1
等于'Value'
--- 的所有索引,并在c2
中指定您想要的值:你最终会得到这个:
如果,正如您在问题中所建议的那样,您有时可能只想 替换已有列中的值,而不是创建新列,然后跳过列创建,并执行以下操作:
给你: