2014-09-12 2 views
0

У меня есть два источника данных: один из базы данных и один из файла CSV. База данных - это ключ.Как это сделать в()/Pandas

Из файла CSV содержит более одного поля

Id firstname lastname 
1 first1  last1 
2 first2  last2 
3 first3  last3 

Я ищу, чтобы сделать то же самое с Панды, как то, что я могу сделать с SQL:

select * from adr_tmp where id in(select id from xyz where key = ‘x’); 

или

delete from adr_tmp where id in(select id from xyz where key = ‘x’); 

После этого у меня должен быть новый фрейм данных с

Id firstname lastname 
1 first1  last1 
2 first2  last2 
+1

Иметь чтения из документации, после того, как вы пытались что-то или запутаться обновления на ваш вопрос: HTTP://pandas.pydata.org/pandas-docs/stable/ind exing.html – EdChum

ответ

2

Это не очень трудно, вы можете попробовать:

adr_temp[adr_temp['id'].isin(list(xyz['id'][xyz['key'] == 'x']))] 

Это вернет все поля из adr_temp, где «идентификатор» находится в списке «ид» от А, где «ключа» = «х»

Для удаления, вы можете просто выбрать дополнительный вышеперечисленное:

adr_temp[~adr_temp['id'].isin(list(xyz['id'][xyz['key'] == 'x']))] 
+0

См. дополнительный текст – Frank

+0

. Будьте более конкретным. Показать небольшой фрагмент таблицы i5747 и topf (имена полей и 2-3 строки данных). И какая ошибка это бросает? или нет ошибки, просто вернув пустой фреймворк? Последний вопрос, какую версию Панд вы используете? – Inox

+0

Это была моя ошибка. Один из них был int, а другой был строкой. – Frank