итерация на pandas данных - PullRequest
       3

итерация на pandas данных

0 голосов
/ 31 января 2020

У меня есть два CSV-файла. file1 выглядит так: file1

, а file 2 выглядит так: file2

Мне нужно написать скрипт (я использую pandas dataframe), в котором столбцу присваивается «Да» каждый раз, когда имя лицензиата Brewer и Microbrewers находится в столбце file1. И если лицензиатов Brewer и Microbrewers нет в файле1, добавьте его в файл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"

1 Ответ

0 голосов
/ 01 февраля 2020

Как я понимаю, Лицензиаты Brewer и Microbrewers столбец в CraftBeverageData.csv заполнены как ожидаемый результат, но на самом деле он должен быть заполнен данными, основанными на наличии Имя столбец в CraftBeverageData.csv с первым столбцом в другом DataFrame.

Код должен выглядеть примерно так:

# 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 (после того, как вы читать оба кадра данных):

licNames = brewers['Brewer and Microbrewers Licensees']
beverages['Brewer and Microbrewers Licensees'] =\
    np.where(beverages.Name.isin(licNames), 'Yes', '')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...