Python/Pandas:如何基于单个id替换Pandas数据帧的特定值?

2024-06-16 11:31:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个长熊猫数据集,其中包括一个名为'id'的列和另一个名为'species'的列。我必须根据'id'列的特定值对'species'列执行更改

例如,如果'id''5555555'(作为字符串),那么我希望'species'值将其当前值'dove'(也是字符串)更改为'hummingbird'。到目前为止,我一直在使用以下方法:

df.loc[df["id"] == '5555555', "species"] = 'hummingbird'

以下是简短的示例数据帧:

import pandas as pd
        
#Starting dataset
d = {'id': ['11111111', '22222222', '33333333', '44444444', '55555555', '66666666', '77777777', '88888888'], 'species': ['dove', 'dove', 'dove', 'hummingbird', 'hummingbird', 'dove', 'hummingbird', 'dove']}
df = pd.DataFrame(data=d)
df
    
    id          species
0   11111111    dove
1   22222222    dove        #wants to replace
2   33333333    dove        #wants to replace
3   44444444    hummingbird
4   55555555    hummingbird
5   66666666    dove
6   77777777    hummingbird
7   88888888    dove        #wants to replace        
     
#Expected outcome
d = {'id': ['11111111', '22222222', '33333333', '44444444', '55555555', '66666666', '77777777', '88888888'], 'species': ['dove', 'hummingbird', 'hummingbird', 'hummingbird', 'hummingbird', 'dove', 'hummingbird', 'hummingbird']}
df = pd.DataFrame(data=d)
df
    
    id          species
0   11111111    dove
1   22222222    hummingbird #replaced
2   33333333    hummingbird #replaced
3   44444444    hummingbird
4   55555555    hummingbird
5   66666666    dove
6   77777777    hummingbird
7   88888888    hummingbird #replaced

对于少量的行来说这是可以的,但是我必须这样做,大约1000行,每个行都有一个'id',所以我想可能有一个循环,我可以将'id'的列表提供给它,但是我真的不知道如何开始

提前谢谢

感谢Scott Boston为我指出了正确的方向,让我可以提出更好的问题


Tags: to数据方法字符串iddataframedfdata