gpt4 book ai didi

python - pandas 根据模式拆分字母和数字混合列

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:21 26 4
gpt4 key购买 nike

我有一个包含一列的示例数据库:

import pandas as pd
d = {

'question#': ['a1.2','a10','a10.1','b11.1a','k20.3d','b20c']
}
df = pd.DataFrame(d)

它看起来像这样:

Out[8]: 
question#
0 a1.2
1 a10
2 a10.1
3 b11.1a
4 k20.3d
5 b20c

没有任何方法可以正确对数字和字母混合列进行排序,因此我认为唯一的方法是首先将该列分成 3 列:

第一列:一个字母:(a-z),字符串始终以一个字母开头

第二列:两种可能的结果:

  1. 单个数字或多位数字:(1-9)+

    或者

  2. 数字 + '.' + 数字:(1-9)+(/.)(1-9)+

第三列:一个字母还是什么都没有:(a-z)?

因此,对于示例数据库,我希望它分为以下列,所需输出:

Out[8]: 
question# firstcol secondcol thirdcol
0 a 1.2
1 a 10
2 a 10.1
3 b 11.1 a
4 k 20.3 d
5 b 20 c

语法与此页面类似吗?我不确定如何准确编写正则表达式语法:

https://chrisalbon.com/python/pandas_regex_to_create_columns.html

  df['firstcol'] = df['question#'].str.extract(not sure the syntax, expand=True)
df['secondcol'] = df['question#'].str.extract(not sure the syntax, expand=True)
df['thirdcol'] = df['question#'].str.extract(not sure the syntax, expand=True)

最佳答案

尝试

df[['firstcol', 'secondcol', 'thirdcol']] = df['question#'].str.extract('([A-Za-z]+)(\d+\.?\d*)([A-Za-z]*)', expand = True)


question# firstcol secondcol thirdcol
0 a1.2 a 1.2
1 a10 a 10
2 a10.1 a 10.1
3 b11.1a b 11.1 a
4 k20.3d k 20.3 d
5 b20c b 20 c

关于python - pandas 根据模式拆分字母和数字混合列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47802570/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com