首页 > 解决方案 > Python pandas数据框:循环遍历每一行,如果条件为真,更新列

问题描述

我有一个 CSV,其中包含我需要查看它们是否存在于其他列中的 URL 列表。我有以下代码循环遍历名为“URLS”的列的每一行,以检查它是否存在于另一个特定列上。如果是这样,那么我需要将一个字符串添加到该行的特定列。我有它的功能,但我不确定如何更新该行的列?我正在阅读文档,我想我可能对此想多了。

import pandas as pd

# Import CSV
data = pd.read_csv(r'URL_export.csv')

# Looping through the URLS of this column
df = pd.DataFrame(data, columns = ['URL', 'Exists'])

# Checking if URLs exist in this row
v = pd.DataFrame(data, columns = ['Check'])

for row in df.itertuples():
    if row.URL in v.Check.values:
        print(row)
        # Add string "Yes" under column name "Exists" for this row

标签: pythonpandasdataframe

解决方案


import pandas as pd

df = pd.DataFrame({
    'URL': ['a', 'b', 'c' ,'d', 'e', 'f'],
    'Exists': ['','','', '', '', '']
})

v = pd.DataFrame({
    'Check': ['a', 'c', 'e']
})

df['Exists'] = df['URL'].apply(lambda x: 'Yes' if x in v['Check'].values else 'No')

输出:

输出

如果需要,只需分配“是”(没有“否”):

df['Exists'] = df['Exists'] + ' ' + df['URL'].apply(lambda x: 'Yes' if x in v['Check'].values else '')

如果“Exists”列已经包含一个值,并且您需要将“Yes”附加到它:

df['Exists'] = df['Exists'] + ' ' + df['URL'].apply(lambda x: 'Yes' if x in v['Check'].values else '')

推荐阅读