gpt4 book ai didi

python - 在数据帧上迭代 re.split()

转载 作者:太空狗 更新时间:2023-10-30 00:12:34 24 4
gpt4 key购买 nike

我正在尝试使用 re.split() 将 pandas 数据框中的单个变量拆分为另外两个变量。

我的数据如下:

   xg              
0.05+0.43
0.93+0.05
0.00
0.11+0.11
0.00
3.94-2.06

我要创作

 e      a
0.05 0.43
0.93 0.05
0.00
0.11 0.11
0.00
3.94 2.06

我可以使用 for 循环和索引来做到这一点。

for i in range(len(df)):
if df['xg'].str.len()[i] < 5:
df['e'][i] = df['xg'][i]
else:
df['e'][i], df['a'][i] = re.split("[\+ \-]", df['xg'][i])

但是这很慢,我认为这不是一个好方法,我正在努力提高我对代码/python 的理解。

我尝试过使用 np.where 编写它,或者使用列表理解或应用 lambda 进行了各种尝试,但我无法让它运行得太快。我认为我遇到的所有问题都是因为我试图将函数应用于整个系列而不是位置值。

如果有人有比我丑陋的 for 循环更好的方法的想法,我会非常感兴趣。

最佳答案

使用带有 expand 参数的 str.split 方法从这个答案中借用: https://stackoverflow.com/a/14745484/3084939

df = pd.DataFrame({'col': ['1+2','3+4','20','0.6-1.6']})
df[['left','right']] = df['col'].str.split('[+|-]', expand=True)

df.head()
col left right
0 1+2 1 2
1 3+4 3 4
2 20 20 None
3 0.6+1.6 0.6 1.6

关于python - 在数据帧上迭代 re.split(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53402227/

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