Python pandas 在数据框中拆分文本和数字

标签 python pandas dataframe

我有一个数据框 df1,第一列的列名称为 Acc Number,数据如下所示:

Acc Number
ASC100.1
MJT122
ASC120.4
XTY111

我需要制作一个新的数据框 df2,它有两列,第一列是文本部分,第二列是数字,所以所需的输出是:

Text    Number 
ASC     100.1
MJT     122
ASC     100.4
XTY     111

我该怎么做?

谢谢!

最佳答案

你可以这样做:

import pandas as pd

data = ['ASC100.1',
'MJT122',
'ASC120.4',
'XTY111']

df = pd.DataFrame(data=data, columns=['col'])

result = df.col.str.extract('([a-zA-Z]+)([^a-zA-Z]+)', expand=True)
result.columns = ['Text', 'Number']
print(result)

输出

  Text Number
0  ASC  100.1
1  MJT    122
2  ASC  120.4
3  XTY    111

图案 ([a-zA-Z]+)([^a-zA-Z]+)表示匹配一组字母:([a-zA-Z]+)后跟一组非字母:([^a-zA-Z]+) .更安全的替代方法是使用以下正则表达式:([a-zA-Z]+)(\d+\.?\d+)假设数字最多只能有一个点。

进一步

  1. 关于 regex 的文档在 Python 中。
  2. 关于 extract 的文档.

关于Python pandas 在数据框中拆分文本和数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53290902/

相关文章:

python - matplotlib Pandas 图中的附加 "axis like"图

Python <函数函数名称位于 0x00000000>

python - 使用字节键创建字典(基于字符串)

python - 如何获取一列的不同值的计数

python-3.x - Pandas :使用以前的值和插值填充 nan

apache-spark - 如何在范围内划分数字列并为 apache spark 中的每个范围分配标签?

python - 在 OpenCV 中从 ROI 中裁剪矩形扩展

python - 对类实例列表进行排序 Python

python - 使用 pandas 标准化器展平 Json 文件数据

python - 根据组的天间隔为列分配值的优雅方法