У меня возникли проблемы с написанием цикла, который возвращает то, что мне нужно. У меня есть два файла 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
Спасибо за руководством. Я посмотрю на 'df.merge()' и попробую. Однако я не могу предположить, что значения в Recommended_H1 уникальны. Есть ли способ написать цикл для iterrate значений из Recommended_H1 в 'crawldf.loc [crawldf ['H1_1'] == '']'? – jlh530i
Если значения в asiconcat не уникальны, то откуда вы знаете, какой из них вы хотите? Или вы надеетесь получить несколько строк, если есть несколько совпадений? – JonD