Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从pandas中的多个列中删除不同的字符串_Python_Pandas_Series - Fatal编程技术网

Python 如何从pandas中的多个列中删除不同的字符串

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

我有一个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          |{'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])