如果另一列与值匹配,则分配列的值

时间:2021-07-20 15:52:37

标签: python pandas

我需要抓取大量链接。完成抓取链接后,我将读取存在此链接的 csv 文件,并更新表示该链接已被抓取的值(指定为 1)。我面临的问题是,作为 Pandas 的新手,我无法在找到后找到为该列赋值的正确方法。

我的数据框:

    Drug    Link    Scraped
0   ADHD (5)    https://example.com/prescriptions/adhd  0
1   Acne (354)  https://example.com/prescriptions/acne  0
2   Alcohol Addiction (12)  https://example.com/prescriptions/alcohol-...   0
... ... ... ...
152 Vomitting/Emesis (312)  https://www.example.com/prescriptions/vomittin...   0
153 rows × 3 columns

我想要做的是,检查 Link 列是否等于特定值,如果是,将 Scraped 列的值更改为 1

首先尝试查找行:

df.loc[df['Link'] == 'https://www.example.com/prescriptions/adhd']
Drug    Link    Scraped
0   ADHD (5)    https://www.example.com/prescriptions/adhd  0

尝试读取 Scraped 的值:

df.loc[df['Link'] == 'https://www.example.com/prescriptions/adhd'].at[0, 'Scraped']
0

接下来,我尝试为 Scraped 分配一个值,将其更改为 1

df.loc[df['Link'] == 'https://www.example.com/prescriptions/adhd'].at[0, 'Scraped']=1

接下来,尝试重新读取值:

df.loc[df['Link'] == 'https://www.example.com/prescriptions/adhd'].at[0, 'Scraped']
0

所以似乎价值根本没有改变。我在这里做错了吗?这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

分配不带“at”的值:

df.loc[df['Link'] == 'https://www.example.com/prescriptions/adhd', 'Scraped']=1