【发布时间】:2021-08-15 13:39:31
【问题描述】:
我正在练习 pandas,但我有一个练习有问题
我有一个 excel 文件,其中有一列存储了两种类型的 url。
df = pd.DataFrame({'id': [],
'url': ['www.something/12312', 'www.something/12343', 'www.somethingelse/42312', 'www.somethingelse/62343']})
| id | url |
| -------- | -------------- |
| | 'www.something/12312' |
| | 'www.something/12343' |
| | 'www.somethingelse/42312' |
| | 'www.somethingelse/62343' |
我应该将其转换为 id,但只有数字应该是 id 的一部分,新的 id 列应该如下所示:
df = pd.DataFrame({'id': [id_12312 , id_12343, diffid_42312, diffid_62343], 'url': ['www.something/12312', 'www.something/12343', 'www.somethingelse/42312', 'www.somethingelse/62343']})
| id | url |
| -------- | -------------- |
| id_12312 | 'www.something/12312' |
| id_12343 | 'www.something/12343' |
| diffid_42312 | 'www.somethingelse/42312' |
| diffid_62343 | 'www.somethingelse/62343' |
我的问题是如何只获取数字并在这种 id 的情况下替换它们? 我已经尝试过 pandas 中的替换和提取功能
id_replaced = df.replace(regex={re.search('something', df['url']): 'id_' + str(re.search(r'\d+', i).group()), re.search('somethingelse', df['url']): 'diffid_' + str(re.search(r'\d+', i).group())})
df['id'] = df['url'].str.extract(re.search(r'\d+', df['url']).group())
但是,他们抛出了一个错误 TypeError: expected string or bytes-like object。
抱歉代码块中的表格。当页面不在代码块中时,页面尖叫着我的代码格式不正确。
【问题讨论】:
-
请格式化您的示例,以便它们可以重现:stackoverflow.com/questions/20109391/…
-
格式已更正
-
diffid到底是什么?什么时候使用id作为前缀,什么时候使用diffid?
标签: python python-3.x pandas