gpt4 book ai didi

python - 如果 '-' 在字符串中间,则将数据帧单元格中的 'E-' 替换为 '-'

转载 作者:行者123 更新时间:2023-12-04 12:32:19 24 4
gpt4 key购买 nike

我有一个由 7 列组成的巨大数据框。摘录:

45589   664865.0    100000.0    7.62275    -.494     1.60149      100010
...
57205 718888.0 100000.0 8.218463 -1.405-3 1.75137 100010
...
55143 711827.0 100000.0 8.156107 9.8336-3 1.758051 100010

由于这些值来自输入文件,因此目前所有的都是字符串类型,我想将所有数据帧更改为 float :

df= df.astype('float')

但是,正如您可能已经在摘录中注意到的那样,隐藏了“-”。有的表示整数的负值,如-.494,有的表示负的幂,如9.8-3。

我需要将后者替换为“E-”,以便 Python 理解它是一种力量,并且可以将单元格切换为浮点类型。通常,我会使用:

df= df.replace('E\-', '-', regex=True)

但是,这也会为我的负值添加一个 E。为避免这种情况,我尝试了此处提供的解决方案:Replace all a in the middle of string by * using regex

str = 'JAYANTA POKED AGASTYA WITH BAAAAMBOO '
str = re.sub(r'\BA+\B', r'*', str)

但是,这是针对一个特定字符串的。由于我的数据框非常大,我想避免遍历每个单元格。

是否可以使用 replacere.sub 函数的组合,以便仅用“E-”替换其他字符串包围的“-” ?

感谢您的帮助!

最佳答案

可以使用regex negative lookahead 和positive lookahead 断言连字符在中间进行替换,如下:

df = df.replace(r'\s', '', regex=True)      # remove any unwanted spaces 
df = df.replace(r'(?<=.)-(?=.)', 'E-', regex=True)

结果:

print(df)

0 1 2 3 4 5 6
0 45589 664865.0 100000.0 7.62275 -.494 1.60149 100010
1 57205 718888.0 100000.0 8.218463 -1.405E-3 1.75137 100010
2 55143 711827.0 100000.0 8.156107 9.8336E-3 1.758051 100010

关于python - 如果 '-' 在字符串中间,则将数据帧单元格中的 'E-' 替换为 '-',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68163639/

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