我有一个很长的Pandas数据集,其中包含一个名为'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为我指出了正确的方向,让我提出了更好的问题!
发布于 2021-07-08 01:10:25
使用isin
humming_ids = [44444444, 5555555, 88888888]
df.loc[df.id.isin(humming_ids), "species"] = 'hummingbird'https://stackoverflow.com/questions/68278771
复制相似问题