Pandas / Python:根据另一列中的值设置一列的值

NLR:

我需要基于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().
安全:

一种方法是将索引与配合使用.loc

在没有示例数据框的情况下,我将在此处进行补充:

import numpy as np
import pandas as pd

df = pd.DataFrame({'c1': list('abcdefg')})
df.loc[5, 'c1'] = 'Value'

>>> df
      c1
0      a
1      b
2      c
3      d
4      e
5  Value
6      g

假设您要创建一个新列 c2c1除where c1之外,该列等效Value,在这种情况下,您想将其分配给10:

首先,您可以使用以下两行之一来创建新列c2,并将其设置为,等同于c1,(它们本质上是做相同的事情):

df = df.assign(c2 = df['c1'])
# OR:
df['c2'] = df['c1']

然后,找到所有c1等于'Value'使用的索引.loc,并c2在这些索引处分配所需的值

df.loc[df['c1'] == 'Value', 'c2'] = 10

最终,您将得到:

>>> df
      c1  c2
0      a   a
1      b   b
2      c   c
3      d   d
4      e   e
5  Value  10
6      g   g

如果如您在问题中所建议的那样,有时您可能只是想替换已经具有的列中的值,而不是创建一个新列,然后跳过该列的创建,然后执行以下操作:

df['c1'].loc[df['c1'] == 'Value'] = 10
# or:
df.loc[df['c1'] == 'Value', 'c1'] = 10

给你:

>>> df
      c1
0      a
1      b
2      c
3      d
4      e
5     10
6      g

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据另一列(Python,Pandas)中的值删除一列的重复项

pandas - 根据另一列更改列中的值

Pandas groupby:根据另一列中的值更改一列中的值

根据Pandas中另一列的值范围汇总一列的内容

根据另一列中的值填充一列-Pandas

根据另一列中的条件在 Pandas 数据框中设置值

根据另一列pandas python的值在python中添加新列

根据Pandas中另一列的值添加新列(python)

Pandas 基于另一列 python 获取一列中的唯一值

根据另一列在pandas列中分配值

Python Pandas DataFrame检查一列的值是否在另一列表中

Pandas - 根据后一列中是否存在值过滤一列中具有相同值和另一列中多个值的行

Python Pandas,根据另一列中的值进行日期时间舍入

Python Pandas,根据另一列中的值进行日期时间舍入

Python:Pandas:如何根据Groupby在另一列中查找最大值

pandas np.where根据csv中另一列中的值在另一列中添加值

遍历一列并根据 PANDAS 数据框中另一列的值将值添加到列表

根据另一列中的值对pandas数据框中的列进行归一化

如何根据另一列中的值检查 pandas df 列值是否存在?

使用 Pandas 根据另一列的值从相邻列中获取立即值

Python (pandas) - 如何对一列中的值进行分组,然后根据另一列中的值删除或保留该组

使用Pandas根据另一列的值创建一列

使用Pandas根据另一列的值选择一列

根据另一列中的字符串值在 pandas 数据框中修改一列

根据另一列中的值替换pandas df中的值

如何根据 Pandas 中另一列中的值替换 NAN 值

pandas groupby并更新一列中的值大于另一列中的值的总和

根据另一列(Python Pandas)的值在列中添加一部分字符串

Python Pandas-根据另一列获取一列的最小值,并将另一列分组