операцию, предыдущий опыт подсказывает, что должно быть +/- стандартное средство. Чтобы постоянно не обегать обекты в которых осуществляю поиск, выстраиваю интересующие объекты по идексу. Вот один из примеров такой функции:
def make_index(df, index_name, column_name):
result = pd.DataFrame(columns=['value'])
for i, row in df[df[index_name].notnull()].iterrows():
indexes = row[index_name].split(', ')
for index in indexes:
if index not in result.index:
result.loc[index, 'value'] = row[column_name]
return result
Может есть что-то стандартное на этот счёт?
Здравствуйте! Не понял, что Вы пытаетесь сделать при помощи функции. Если не сложно, то подробнее разъясните. Покажите, какие данные есть на ВХОДЕ и что хотите получить на ВЫХОДЕ.
Да, конечно, попробую развернуть вопрос. Постоянно возникает задача бежать по одному DataFrame, брать его значение, иногда оно составное, поэтому приходится ещё цикл по ним создавать. Искать это значение в другом DF, если находится обогащать данными из второго первый. Если делать влоб сложность такого из-за цикла в цикле большая. Поэтому я предварительно формирую доп. DF где индексами являются значения по которым я ищу. Тогда мне не надо искать в цикле, я по индексу сразу забираю значения из дополнительного DF. Надеюсь не сделал ещё путанней вопрос 😔
а INNER JOIN не пробовали?
Возможно, ответ найдётся здесь: https://stackoverflow.com/questions/41815079/pandas-merge-join-two-data-frames-on-multiple-columns А вообще из такой формулировки кажется, что просто можно сконкатенировать первые 3 колонки и уже дальше спокойно их джойнить
Поэксперементирую, спасибо.
И всё же с видимыми примерами гораздо проще подсказывать. Пусть даже это будут dummy-данные
Ок, вечером оформлю.
вот это правильный вопрос.
Может Вам нужно что-то вот такое...
Ага прям ровно то что хотелось. Спасибо Вам!
Обсуждают сегодня