Python 如何从pandas中的多个列中删除不同的字符串
我有一个pd数据框,看起来像这样:Python 如何从pandas中的多个列中删除不同的字符串,python,pandas,series,Python,Pandas,Series,我有一个pd数据框,看起来像这样: keyword | ranks |search_type | search_volume 0 keyword1 |[{'rank': 1}]| 1 | {'search_volume': 10} 1 keyword1 |[{'rank': 1}]| 2 |{'search_volume': 10} 2 keyword2 |[{'rank': 1}]| 1
keyword | ranks |search_type | search_volume
0 keyword1 |[{'rank': 1}]| 1 | {'search_volume': 10}
1 keyword1 |[{'rank': 1}]| 2 |{'search_volume': 10}
2 keyword2 |[{'rank': 1}]| 1 |{'search_volume': 390}
3 keyword2 |[{'rank': 1}]| 2 |{'search_volume': 390}
4 keyword3 |[{'rank': 1}]| 1 |{'search_volume': 170}
...
列ranks
和search\u volume
应该是只包含数字的整数,我正在试图找到一种方法来删除[{'rank':
,{'search\u volume':
和右括号,因此该表如下所示:
keyword | ranks |search_type | search_volume
0 keyword1 | 1 | 1 |10
1 keyword1 | 1 | 2 |10
2 keyword2 | 1 | 1 |390
3 keyword2 | 1 | 2 |390
4 keyword3 | 1 | 1 |170
...
我试过这样做:df['ranks'].replace(“[{'rank\':”,'',inplace=True)
但是它没有做任何事情。而且这不是解决这个问题的最快方法
我已经看过这个线程,这个解决方案一次只针对一列(最好一次去掉所有不带标记的字符串),它返回以下错误:AttributeError:'list'对象没有属性“lstrip”
我正在使用python 3。这是一种使用方法:
这假设您的排名
系列包含列表,您的搜索卷
系列包含字典。使用应用:
df['ranks'] = df['ranks'].apply(lambda x: x[0]['rank'])
df['search_volume'] = df['search_volume'].apply(lambda x: x[0]['search_volume'])
奖金
这一条适用于您的情况,使其成为一条直线:
df[['ranks', 'search_volume']] = df[['ranks', 'search_volume']].applymap(lambda x: x[0].values()[0])
尝试:df['ranks']。应用(lambda x:x[0][“rank”])
df[['ranks', 'search_volume']] = df[['ranks', 'search_volume']].applymap(lambda x: x[0].values()[0])