Как произвести обработку данных столбца, содержащих значения?
Необходимо убрать в колонке name кавычки и квадратные скобки и преобразовать в список, не изменяя ячейки с отсутствующими значениями (как добавить пустое значение на этапе создания df не знаю, поэтому поставил вместо NaN - ''):
d = {
'name': [
'',
['tot', 'piter', 'carl'],
['brick', 'nick'],
['rick', 'reaven', 'bart', 'homer'],
['rick', 'morty']
],
'Date': [
'11/05/2011',
'9/02/2010',
'1/01/2014',
'12/20/2020',
'9/30/2009'
],
'Address': [
'BY',
'YU',
'RU',
'BY',
'BY'
]
}
df = pd.DataFrame(data = d)
Ответ должен выглядеть как:
| name | Date | Address |
|---|---|---|
| NaN | 11/05/2011 | BY |
| [tot, piter, carl] | 9/02/2010 | YU |
| [brick, nick] | 1/01/2014 | RU |
| [rick, reaven, bart, homer] | 12/20/2020 | BY |
| [rick, morty] | 9/30/2009 | BY |
Желательно, не использовать циклы.
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Поскольку не сказано, что делать с NA, то допустим пускай превращается в строку:
df['name'] = df['name'].str.join(', ')
Результат:
| name | Date | Address |
|---|---|---|
| <NA> | 11/05/2011 | BY |
| tot, piter, carl | 9/02/2010 | YU |
| brick, nick | 1/01/2014 | RU |
| rick, reaven, bart, homer | 12/20/2020 | BY |
| rick, morty | 9/30/2009 | BY |
Автор решения: Namerek
→ Ссылка
Если всетаки с N/A нужно что-то делать то можно так:
import pandas as pd
d = {
'name': [
'',
['tot', 'piter', 'carl'],
['brick', 'nick'],
['rick', 'reaven', 'bart', 'homer'],
['rick', 'morty']
],
'Date': [
'11/05/2011',
'9/02/2010',
'1/01/2014',
'12/20/2020',
'9/30/2009'
],
'Address': [
'BY',
'YU',
'RU',
'BY',
'BY'
]
}
df = pd.DataFrame(data=d)
def list_to_str(item: list):
if isinstance(item, list) and item:
return ', '.join(item)
# Тут можно добавить дополнительную обработку
df['name'] = df['name'].apply(list_to_str)
print(df)
name Date Address
0 None 11/05/2011 BY
1 tot, piter, carl 9/02/2010 YU
2 brick, nick 1/01/2014 RU
3 rick, reaven, bart, homer 12/20/2020 BY
4 rick, morty 9/30/2009 BY