python - 如何从 pandas 数据框中特定列的所有值中删除所有非数字字符?

标签 python pandas dataframe

我有一个如下所示的数据框:

     A       B           C
1   red78   square    big235
2   green   circle    small123
3   blue45  triangle  big657

我需要能够从 C 列的所有行中删除非数字字符,以便我的数据框看起来像:

     A       B           C
1   red78   square    235
2   green   circle    123
3   blue45  triangle  657

我尝试使用以下方法但得到错误预期的字符串或缓冲区:

import re
dfOutput.imgID = dfOutput.imgID.apply(re.sub('[^0-9]','', dfOutput.imgID), axis = 0)

我应该怎么做?

创建数据框的代码:

dfObject = pd.DataFrame()
dfObject.set_value(1, 'A', 'red78')
dfObject.set_value(1, 'B', 'square')
dfObject.set_value(1, 'C', 'big235')
dfObject.set_value(2, 'A', 'green')
dfObject.set_value(2, 'B', 'circle')
dfObject.set_value(2, 'C', 'small123')
dfObject.set_value(3, 'A', 'blue45')
dfObject.set_value(3, 'B', 'triangle')
dfObject.set_value(3, 'C', 'big657')

最佳答案

使用 str.extract 并传递正则表达式模式以仅提取数字部分:

In[40]:
dfObject['C'] = dfObject['C'].str.extract('(\d+)', expand=False)
dfObject

Out[40]: 
        A         B    C
1   red78    square  235
2   green    circle  123
3  blue45  triangle  657

如果需要,您可以转换为 int:

dfObject['C'] = dfObject['C'].astype(int)

关于python - 如何从 pandas 数据框中特定列的所有值中删除所有非数字字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44117326/

相关文章:

python - 如何将包含数据和 datetime64[ns] 的列表与具有 datetime64[ns] 索引的 pandas 数据框合并

Python:读取子进程的标准输出而不打印到文件

python - Tkinter Python 删除垂直空格

python - 如何将数字数据映射到 Pandas 数据框中的类别/容器

python - Pandas df.index.round ('D' ) 24 小时

python - 使用 R 数据框、动物园和结果的真实日期进行预测

javascript - 如何在客户端使用 angularjs 并在后端使用 flask 开发 Web 应用程序?

python - 如果数据框中的另一列使用 pandas 匹配某个值,则从数据框中的列中减去值

python - 获取 csv 文件的最后 10000 行

r - 将文本添加到 data.frame 的一列