#pandas
#pandas
Вопрос:
У меня есть несколько наборов данных, которые необходимы для обработки pandas.
DF 1:
DATE DATA1_ID DATA
20200101 XXX 123
20200102 YYY 456
...
DF 2:
DATE DATA2_ID DATA
20200101 AAA 098
20200102 BBB 765
...
Чего я хочу добиться, так это иметь общий фильтр для этих двух таблиц, например, используя df.loc[df.DATA1_ID == «XXX»] без необходимости изменять имена столбцов в любом из фреймов данных.
Я хочу выполнить поиск по этому «идентификатору» на основе столбцов IDS, которые будут работать в обоих фреймах данных.
Пример поведения при запуске скрипта в обоих фреймах данных:
- Идентификатор фильтрации = XXX. Результатом будет DF 1: 20200101 XXX 123. DF 2:
- Идентификатор фильтрации = AAA. Результатом будет DF 1: . DF 2: 20200101 AAA 098
- Идентификатор фильтрации = OOO. Результатом будет DF 1: . DF 2:
Комментарии:
1. Изменяется ли положение столбца ID? Или это всегда второй столбец в фреймах данных?
2. Извините за поздний ответ. Но да. позиция столбца ID изменяется между фреймами данных.
Ответ №1:
Я могу придумать два варианта:
- переименуйте интересующие столбцы в одно уникальное имя. В зависимости от количества фреймов данных и значения столбца названия столбцов, это может быть слишком неуклюжим.
- Если столбцы, к которым вы хотите получить доступ, находятся в одной и той же позиции в dfs, вы можете получить доступ к имени n-го столбца в списке столбцов. Что-то вроде
df.columns[1]
. - Вы можете найти столбец id:
id_cols = [col for col in df.columns if 'id' in col]
Комментарии:
1. Здравствуйте, извините за крайне поздний ответ. (1) в pandas нет встроенного модуля, который мог бы достичь того, чего я хочу? (2) Столбец идентификаторов can не является постоянным и может изменяться без предварительного уведомления.
2. @Dense04 Я добавил опцию, которая находит столбец ID, предполагая, что столбец id содержит ‘id’ в своем названии. В зависимости от возможных значений имен столбцов вам может потребоваться доработать фильтр, но вы поняли идею.