Pandas Dataframe:将混合的floatstring列拆分为单独的float和string列

2024-04-26 02:34:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为'VALUE'的Pandas dataframe列,它的字符串数据如下:'-1.459NS' 我想创建两个新列->;'VALUE'必须有一个float-1.459,UNIT必须有一个字符串'NS'

有没有正则表达式和/或非正则表达式的方法? 最快的方法是什么?我可能有超过一百万条线,我想做这个。在

>>> d = {'VALUE': ['-1.234NS','0.22MH']}
>>> df=pd.DataFrame(data=d)
>>> df
      VALUE
0  -1.234NS
1    0.22MH

我想要:

^{pr2}$

其中VALUE是float,UNIT是string


Tags: 数据方法字符串gtdataframepandasdfvalue
2条回答

df.column.str.extract将生成一个数据帧,正则表达式中每个匹配的组有一列,按int位置索引。然后可以使用rename重命名列。在

>>> df.VALUE.str.extract(r'([-]?[\d.]*)([\w\D]*)').rename(columns={0:'VALUE', 1:'UNIT'})

    VALUE UNIT
0  -1.234   NS
1    0.22   MH

如果以下单位不是固定长度,这里是另一种非正则表达式方法来解决这个问题。这将把字符串分成浮点数和字符串类型单位。在

s = '-1.234NS'
a,b = map(str, s.split("."))
a = a + '.'
unit = ''
for num in b:
    try:
        float(num)
        a += num
    except ValueError:
        unit += num
fl = float(a)

相关问题 更多 >