Я пытаюсь переименовать column
, проверяя значения в определенных столбцах.Вот установка:
In [9]: import pandas as pd
In [10]: df = pd.DataFrame(
...: {"unknown_field": ['bob@gmail.com', 'shirley@gmail.com', 'groza@pubg.com']}
...: )
In [11]: df
Out[11]:
unknown_field
0 bob@gmail.com
1 shirley@gmail.com
2 groza@pubg.com
Используя validate_column(ser)
, который принимает объект Pandas.Series
в качестве параметра, он проверяет значения в этом столбце и изменяет имя столбца этого конкретного столбца с предварительным-определенный набор имен столбцов.Для простоты в этом примере столбец проверяется как столбец email
.
In [12]: def validate_column(ser):
...: # Value validation method returns that this column is email column
...: ser.rename('email', inplace=True)
...:
Текущее имя unknown_field
: unknown_field
, и, как и ожидалось, имя изменяетсяemail
после выполнения validate_column
метода:
In [13]: df.unknown_field
Out[13]:
0 bob@gmail.com
1 shirley@gmail.com
2 groza@pubg.com
Name: unknown_field, dtype: object
In [14]: validate_column(df.unknown_field)
In [15]: df.unknown_field
Out[15]:
0 bob@gmail.com
1 shirley@gmail.com
2 groza@pubg.com
Name: email, dtype: object
Однако имена столбцов в df
не изменяются, как я ожидал.В переменной df
он по-прежнему называется unknown_field
:
In [16]: df
Out[16]:
unknown_field
0 bob@gmail.com
1 shirley@gmail.com
2 groza@pubg.com
В настоящее время я использую следующий код, чтобы вручную изменить имя столбца в моей переменной df
.
In [17]: for col in df.select_dtypes(object):
...: df.rename(columns={col: df[col].name}, inplace=True)
...:
In [18]: df
Out[18]:
email
0 bob@gmail.com
1 shirley@gmail.com
2 groza@pubg.com
In [19]:
У меня такой вопрос:
Есть ли более эффективный / простой способ переименования Series
и непосредственно отраженный в DataFrame
?