Проблема в том, что если какая-либо из серий UTF8 содержит символы, отличные от ASCII, это не удается из-за типа базы данных, который я использую, поэтому я хотел бы отфильтровать символы, отличные от ASCII, оставив при этом все остальное.
Я создал функцию, использующую лямбда-функцию, которая работает, но это медленнее по сравнению со стандартными функциями Polars, и я надеялся заменить это альтернативой Polars
Код: Выделить всё
def df_column_clean(df:pl.DataFrame, drop_non_ascii:bool=False):
"""
Takes a Polars Dataframe and performs data cleaning on all columns
Currently it only converts string series to ascii but can be expanded in the future
"""
if drop_non_ascii:
df_changes = []
df_columns = df.schema
for col_name, col_type in df_columns.items():
if col_type != pl.Utf8:
continue
# Remove non-ascii characters
df_changes.append(pl.col(col_name).apply(lambda x: None if x is None else x.encode('ascii', 'ignore').decode('ascii'), skip_nulls=False))
if len(df_changes) > 0:
return df.with_columns(df_changes)
return df
Заранее спасибо
Подробнее здесь: https://stackoverflow.com/questions/769 ... -dataframe
Мобильная версия