2015-06-15 3 views
0

У меня возникли проблемы с написанием цикла, который возвращает то, что мне нужно. У меня есть два файла CSV. Для значений в столбце в CSV 1 мне нужно найти, есть ли соответствующие значения в CSV 2, и если есть соответствующие значения, верните фрейм данных для строки соответствующих значений. Когда я пытаюсь создать цикл, я не могу получить правильные значения в цикле. Например:Вложенные петли и DataFrame - Python и Pandas

import pandas as pd 

csv2 = pd.read_csv('/users/jamesh/documents/asiopods/asicrawlconcat.csv', header = 1) 
csv1 = pd.read_csv('/users/jamesh/documents/asiopods/asiconcat.csv', header = 0) 
h1s = csv1['Recommended_H1'] 


h1 = h1s 
h1[0:3] #test 
subject = csv2['H1_1'] 

for x in h1: 
    for y in subject: 
     if x == y: 
      print y 

Код выше возвращает значения, которые мне нужны, но в строковой форме. Мне нужно вернуть фрейм данных для значений y, из CSV2

Любая помощь или направление приветствуется!

Редактировать - с помощью какой-либо офлайн-справки я смог получить правильную информацию из цикла. Тем не менее, я до сих пор не могу понять, как получить данные в pandas.dataframe. Вместо этого данные возвращаются вертикально. Вот новый цикл:

def foogaiz(): 
    for k1, v1 in h1.iteritems(): 
     for k2, v2 in subject.iteritems(): 
      if v1 == v2: 
       data = csv2.irow(k2) 
       return data 

ответ

0

Это немного непонятно, если значения, соответствующие вы на («Recommend_H1» в вашем примере) уникальны и появляются только один раз в asiconcat.csv. Если да, то я рекомендую называть две колонки, которые имеют совпадение значений же («H1_1» в моем примере синтаксиса ниже) и делает df.merge()

matched_df = df.merge(crawldf,on="H1_1",how="left") 

соединения слева вариант для того, чтобы сохранить те строки, которые надевают» t имеет совпадения на crawldf.

Вы можете прочитать документацию для слияния здесь:

http://pandas.pydata.org/pandas-docs/stable/merging.html

+0

Спасибо за руководством. Я посмотрю на 'df.merge()' и попробую. Однако я не могу предположить, что значения в Recommended_H1 уникальны. Есть ли способ написать цикл для iterrate значений из Recommended_H1 в 'crawldf.loc [crawldf ['H1_1'] == '']'? – jlh530i

+0

Если значения в asiconcat не уникальны, то откуда вы знаете, какой из них вы хотите? Или вы надеетесь получить несколько строк, если есть несколько совпадений? – JonD

Смежные вопросы