gpt4 book ai didi

python - 使用拆分填充 Pandas 数据框中的列

转载 作者:太空宇宙 更新时间:2023-11-04 05:29:38 25 4
gpt4 key购买 nike

我正在处理文本数据,我只想根据现有列填充一个新列。

示例:列 sourceEncodedID 可能具有类似 a.b.c 的值,我只想提取字符串的第二部分 b ,如果有第二部分可用。以下是一些示例值:

sourceEncodedID    Branch    
a.b.c b
c.r.d r
a a
p p

为此,我想出了以下代码:

for i in range(0,20350):
if len(str(artifacts.sourceEncodedID[i]).split('.')) > 1:
artifacts['branch'][i] = str(artifacts.sourceEncodedID[i]).split('.')[1]
else:
artifacts['branch'][i] = str(artifacts.sourceEncodedID[i])

dataframe 中只有 20k 行,但这段代码需要几分钟才能执行,然后从未完成并使我的浏览器无响应(我正在使用 ipython notebook)。我原以为这会在几秒钟内运行。

这段代码中是否有我无法捕捉到的明显愚蠢的地方?我该如何解决?

最佳答案

UPDATE2: - 我相信这会更快一些:

x['new'] = x.sourceEncodedID.str.replace(r'[^\.]*\.([^\.]*).*', r'\1')

20K DF 时序:

In [155]: x.shape
Out[155]: (20000, 2)

In [156]: %timeit x['new'] = x.sourceEncodedID.str.replace(r'[^\.]*\.([^\.]*).*', r'\1')
10 loops, best of 3: 127 ms per loop

更新:

In [68]: x['new'] = x.sourceEncodedID

In [69]: x
Out[69]:
sourceEncodedID Branch new
0 a.b.c b a.b.c
1 c.r.d r c.r.d
2 a a a
3 p p p

In [70]: x.ix[x.sourceEncodedID.str.contains('\.'), 'new'] = x.sourceEncodedID.str.split('\.', expand=True)[1]

In [71]: x
Out[71]:
sourceEncodedID Branch new
0 a.b.c b b
1 c.r.d r r
2 a a a
3 p p p

当首先使用 pandas 数据帧时,总是尝试找到矢量化解决方案。并且只有在绝对不可能的情况下才仔细检查它,并且只有在尝试循环方法之后才进行检查,因为它会慢几个数量级。

旧答案:

试试这个:

In [61]: x.sourceEncodedID.str.split('\.', expand=True)[1]
Out[61]:
0 b
1 r
2 None
3 None
Name: 1, dtype: object

关于python - 使用拆分填充 Pandas 数据框中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37556022/

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