使用向量化pandas函数向行添加多个项,而不是iterrows?

2024-05-23 19:52:01 发布

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

我有一个相当大的生物信息学数据集,我正在用熊猫进行处理。看起来像这样:

>>> df = pd.DataFrame([['a=1|b=4', 'a=2|b=3', 'a=1|b=1'], 
     [None]*3, [None]*3], index=['metadata', 'a', 'b']).T
>>> df
  metadata     a     b
0  a=1|b=4  None  None
1  a=2|b=3  None  None
2  a=1|b=1  None  None

我想从“metadata”列中提取元数据,并将其放入a和b列(是的,生物信息学文件格式很糟糕)。我目前的做法是使用数据框错误():

^{pr2}$

这是可行的,但是对于大型数据集来说,速度非常慢。我的问题是:有没有一种方法可以在不使用iterrows、使用向量化pandas函数的情况下得到相同的结果,并且得到相同的结果?在


Tags: 数据方法nonedataframepandasdfindex错误
1条回答
网友
1楼 · 发布于 2024-05-23 19:52:01

这应该更快

In [124]: regex = r'\w=(\d+)\|\w=(\d+)'

In [127]: df[['a', 'b']] = df.metadata.str.extract(regex)

In [128]: df
Out[128]: 
  metadata  a  b
0  a=1|b=4  1  4
1  a=2|b=3  2  3
2  a=1|b=1  1  1

[3 rows x 3 columns]

编辑:

有趣的是,看起来它实际上比较慢,但我怀疑它会很好地扩展

^{pr2}$

相关问题 更多 >