python - 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
解决方案
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 '')
推荐阅读
- python - 从 Python 中的命令行参数获取输入路径和文件、输出路径和文件
- angular - angular7 路由保护和同步 http 订阅
- python - 替换“?”时出错 Python中数据框中的平均值
- postgresql-9.2 - postgres sql:错误:“偏移”处或附近的语法错误
- python - 如何使用 Pandas 更改日期时间格式
- angular - IntelliJ 自动替换双引号字符串
- json - 在 rest 端点上强制执行 Json 模式验证,以验证 Json 响应的完整性
- python - 如何提取列的值并使用结果创建新列
- sql - Hive:时间戳间隔
- mapping - WSDL 到固定文本的转换不是 IIB 中的填充字符?