Полярные: выберите столбец на основе имени, определенного в другом столбце.Python

Программы на Python
Ответить
Anonymous
 Полярные: выберите столбец на основе имени, определенного в другом столбце.

Сообщение Anonymous »

У меня есть два фрейма данных со следующими структурами:

Код: Выделить всё

dfA = pl.DataFrame(
{
"year": [2000, 2001, 2002, 2003, ...],
"comp": ["1A", "1A", "1B", "1C", ...]
}
)

dfB = pl.DataFrame(
{
"year": [2000, 2001, 2002, 2003, ...],
"1A": [10, 12, 14, 12, ...],
"1B": [20, 30, 40, 20, ...],
"1C": [1, 2, 3, 4, ...]
}
)
мне нужен новый столбец N в dfA, который получит значение в dfB, соответствующее "году" и " комп". Другими словами, я хочу выбрать столбец в dfB на основе значения в dfA["comp"]. Ожидаемый результат примерно такой:

Код: Выделить всё

"year" | "comp" | "N" |
2000 | "1A" | 10 |
2001 | "1A" | 12 |
2002 | "1B" | 40 |
2003 | "1C" | 4  |
Я уверен, что все возможные значения в «comp» являются именами столбцов в dfB . Кроме того, диапазон «год» в обоих фреймах данных одинаков.
Я попытался объединить оба фрейма данных и использовать значение «comp» для выбора целевой столбец. Что-то вроде:

Код: Выделить всё

dfA.join(
dfB, on="year", how="left"
)
.with_columns(
pl.col(pl.col("comp")).alias("N")
)
но я не знаю, как и можно ли преобразовать pl.col("comp") в действительную строку для внешнего pl.col() .
Примечание: у меня может быть много возможных значений для «1A», «1B» и т. д. поэтому pl.when().then().otherwise() не является жизнеспособным решением.

Подробнее здесь: https://stackoverflow.com/questions/791 ... her-column
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»