如何替换熊猫数据框中特定列中的特定值

时间:2019-08-23 11:20:45

标签: python python-3.x pandas dataframe

获取格式为字符串L和熊猫数据框df的代码列表:

list = ['A', 'D', 'G']
df = 

Code    Type    Score   Price
A        1       1.3     5
A        2       4.5     6
C        4       4.32    7
D        5       2.4     8
E        6       2       9
F        7       1.3     2
G        7       1       1


如果df ['Code']在列表中,如何替换df ['Price']中的值?

因此,在这种情况下,我要更改前两行,第四行和最后一行,因为它们具有列表中的代码。

我还有另一个列表,其中将包含值,并且该列表的长度应为要替换的值的数量,因此在此示例中,其长度为4。因此,该列表看起来像price_replace = [3,4,7,8],因此前两行的价格变为3和4,....,依此类推

我希望其他所有内容保持不变。

我尝试过

df.loc[df['Code'].isin(list)]

会生成由我要更改的行组成的熊猫数据框,但我不确定如何实际更改它们,然后保持df的其他行不变。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以简单地使用numpy.where()来做到这一点。

C = numpy.where('condition', x, y)

xy应该是数组。

这意味着如果条件返回Cx等于True,否则返回y

在您的情况下:

df['Price'] = numpy.where(df['Code'] in list, ['Your value if true'], df['Price'])

这基本上意味着,当您的Price列表中有'Your value if true'列中的值时,您将以Code来替换list列,否则它将保留原始值Price列中的内容。

此外,请避免将'list'用作python中list对象的变量名,这是一个坏习惯:))。