我有一只熊猫,看起来像:
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
的列表,我也尝试了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
strip
和split
,expand参数设置为true,即如果没有,也可以将字符串转换为dict
我认为有
list
和dicts
,所以建议使用列表理解和select first dictionary of list和select bykey
:或:
试试这个
df['ranks'].str.split(', ', expand=True).rename(columns={0:'ranks',1:'url'}
)相关问题 更多 >
编程相关推荐