获取格式为字符串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的其他行不变。
有什么想法吗?
答案 0 :(得分:0)
您可以简单地使用numpy.where()
来做到这一点。
C = numpy.where('condition', x, y)
x
和y
应该是数组。
这意味着如果条件返回C
,x
等于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
对象的变量名,这是一个坏习惯:))。