Anonymous
Функция Pandas isin в полярах
Сообщение
Anonymous » 08 ноя 2025, 19:22
Иногда я дохожу до того, что мне нужно запустить следующую строку:
Код: Выделить всё
DF['is_flagged'] = DF['id'].isin(DF2[DF2['flag']==1]['id'])
Например:
Код: Выделить всё
import polars as pl
df1 = pl.DataFrame({
'Animal_id': [1, 2, 3, 4, 5, 6, 7],
'age': [4, 6, 3, 8, 3, 8, 9] })
df2 = pl.DataFrame({
'Animal_id': [1, 2, 3, 4, 5, 6, 7],
'Animal_type': ['cat', 'dog', 'cat', 'cat', 'dog', 'dog', 'cat'] })
Интересно, как легко преобразовать его в поляры, не используя flag, а затем .join().
Код: Выделить всё
def isin_pandas_example(df1, df2):
df2.loc[df2['Animal_type'] == 'dog', 'dog'] = 1
df1['is_dog'] = df2['Animal_id'].isin(df2[df2['dog'] == 1]['Animal_id']).astype(int)
return pl.from_pandas(df1)
Код: Выделить всё
print(isin_pandas_example(df1.to_pandas(), df2.to_pandas()))
Ожидаемый результат:
Код: Выделить всё
shape: (7, 3)
┌───────────┬─────┬────────┐
│ Animal_id ┆ age ┆ is_dog │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 │
╞═══════════╪═════╪════════╡
│ 1 ┆ 4 ┆ 0 │
│ 2 ┆ 6 ┆ 1 │
│ 3 ┆ 3 ┆ 0 │
│ 4 ┆ 8 ┆ 0 │
│ 5 ┆ 3 ┆ 1 │
│ 6 ┆ 8 ┆ 1 │
│ 7 ┆ 9 ┆ 0 │
└───────────┴─────┴────────┘
Я пытался использовать функцию is_in(), но это не сработало.
Подробнее здесь:
https://stackoverflow.com/questions/751 ... -in-polars
1762618948
Anonymous
Иногда я дохожу до того, что мне нужно запустить следующую строку: [code]DF['is_flagged'] = DF['id'].isin(DF2[DF2['flag']==1]['id']) [/code] Например: [code]import polars as pl df1 = pl.DataFrame({ 'Animal_id': [1, 2, 3, 4, 5, 6, 7], 'age': [4, 6, 3, 8, 3, 8, 9] }) df2 = pl.DataFrame({ 'Animal_id': [1, 2, 3, 4, 5, 6, 7], 'Animal_type': ['cat', 'dog', 'cat', 'cat', 'dog', 'dog', 'cat'] }) [/code] Интересно, как легко преобразовать его в поляры, не используя flag, а затем .join(). [code]def isin_pandas_example(df1, df2): df2.loc[df2['Animal_type'] == 'dog', 'dog'] = 1 df1['is_dog'] = df2['Animal_id'].isin(df2[df2['dog'] == 1]['Animal_id']).astype(int) return pl.from_pandas(df1) [/code] [code]print(isin_pandas_example(df1.to_pandas(), df2.to_pandas())) [/code] Ожидаемый результат: [code]shape: (7, 3) ┌───────────┬─────┬────────┐ │ Animal_id ┆ age ┆ is_dog │ │ --- ┆ --- ┆ --- │ │ i64 ┆ i64 ┆ i64 │ ╞═══════════╪═════╪════════╡ │ 1 ┆ 4 ┆ 0 │ │ 2 ┆ 6 ┆ 1 │ │ 3 ┆ 3 ┆ 0 │ │ 4 ┆ 8 ┆ 0 │ │ 5 ┆ 3 ┆ 1 │ │ 6 ┆ 8 ┆ 1 │ │ 7 ┆ 9 ┆ 0 │ └───────────┴─────┴────────┘ [/code] Я пытался использовать функцию is_in(), но это не сработало. Подробнее здесь: [url]https://stackoverflow.com/questions/75138693/pandas-isin-function-in-polars[/url]