У меня есть DF для панд, который выглядит следующим образом:
Keyword | ranks | search_type | search_volume
kw1 |[{'rank': 1, 'url': example.com}]| 1 | 500
kw1 |[{'rank': 1, 'url': example.com}]| 2 | 500
kw2 |[{'rank': 2, 'url': example.com}]| 1 | 1500
kw2 |[{'rank': 2, 'url': example.com}]| 2 | 1500
kw3 |[{'rank': 1, 'url': example.com}]| 1 | 60
kw3 |[{'rank': 1, 'url': example.com}]| 2 | 60
, что я хочу, это разделить ranks
на два столбца: ranks
, который содержит ранг, и новый столбец с именем url
который содержит URL, поэтому результирующий df будет выглядеть так:
Keyword | ranks | url | search_type | search_volume
kw1 |[{'rank': 1 | 'url': example.com}]| 1 | 500
kw1 |[{'rank': 1 | 'url': example.com}]| 2 | 500
kw2 |[{'rank': 2 | 'url': example.com}]| 1 | 1500
kw2 |[{'rank': 2 | 'url': example.com}]| 2 | 1500
kw3 |[{'rank': 1 | 'url': example.com}]| 1 | 60
kw3 |[{'rank': 1 | 'url': example.com}]| 2 | 60
Пока я пробовал:
df.ranks = df.ranks.str.split(',',1).tolist()
, который возвращает список Nan
s, яТакже пробовал df['ranks'].str.split(',', expand=True)
, который не работает.Я пытался:
df = pd.DataFrame(df.ranks.str.split(' ',1).tolist(),columns = ['ranks','url'])
но я получаю ValueError: Shape of passed values is (1, 400), indices imply (2, 400)
возвращено.
РЕДАКТИРОВАТЬ: df.ranks.dtype
возвращает dtype('0')
type(df.ranks)
возвращает pandas.core.series.Series