我有两个csv文件。 file1看起来像这样: file1
文件2看起来像这样:file2
我需要编写一个脚本(我正在使用pandas数据框),每当Brewer和Microbrewers Licensees名称在file1的列中时,该列都用“是”填充该列。 如果文件1上没有Brewer和Microbrewers许可证持有人,则将文件添加到文件1中,包括县和地址(由文件1的各列解析)
到目前为止,我得到了:
import pandas as pd
import numpy as np
factories=[]
file1=pd.read_csv("CraftBeverageData.csv")
file2=pd.read_csv("brewers.csv")
beers1 = pd.DataFrame(file1)
for i in beers1["Name"]:
factories.append(i)
for name in brewers["Brewer and Microbrewers Licensees"]:
if name in factories:
beers1["Brewer and Microbrewers Licensees"]="Yes"
答案 0 :(得分:0)
据我所知,酿酒师和微型酿酒师的许可证持有人列 CraftBeverageData.csv 已填充为预期结果, 但实际上应该根据 Name 列的存在填充数据 在 CraftBeverageData.csv 中,另一个数据框的第一列中。
代码应如下所示:
# Read DataFrames
beverages = pd.read_csv("CraftBeverageData.csv")
brewers = pd.read_csv("brewers.csv")
# Processing
licNames = brewers['Brewer and Microbrewers Licensees'].values
beverages['Brewer and Microbrewers Licensees'] =\
beverages.Name.apply(lambda name: 'Yes' if name in licNames else '')
我无法测试此代码,因为您未提供源数据 以易于复制的形式。
基于 Numpy 的另一个更简洁的解决方案(在您阅读了两个DataFrame之后):
licNames = brewers['Brewer and Microbrewers Licensees']
beverages['Brewer and Microbrewers Licensees'] =\
np.where(beverages.Name.isin(licNames), 'Yes', '')