Python 在DataFrame中使用一个映射定义两列

Python 在DataFrame中使用一个映射定义两列,python,pandas,Python,Pandas,我有一个函数,它返回一个长度为2的列表。我希望将此函数应用于数据帧中的一列,并将结果分配给两列 这实际上是有效的: from pandas import * def twonumbers(x): return [2*x, 3*x] df = DataFrame([1,4,11],columns=['v1']) concat([df,DataFrame(df['v1'].map(twonumbers).tolist(), columns=['v2','v3'])],axis=1)

我有一个函数,它返回一个长度为2的列表。我希望将此函数应用于数据帧中的一列,并将结果分配给两列

这实际上是有效的:

from pandas import *

def twonumbers(x):
    return [2*x, 3*x]

df = DataFrame([1,4,11],columns=['v1'])

concat([df,DataFrame(df['v1'].map(twonumbers).tolist(), columns=['v2','v3'])],axis=1)
但我正在寻找一种更简单的方法来完成上面的最后一行。大概是这样的:

df['v3'], df['v2'] = df['v1'].map(twonumbers)
使
df
看起来像这样

   v1  v2  v3
0   1   2   3
1   4   8  12
2  11  22  33

注意:这取决于
twownumbers
能够接受熊猫系列作为输入,并返回两个系列的列表作为输出。

这是:还是此帮助?ohhhh。。。信不信由你,我真的试着搜索了一段时间,但没有看到第一个链接。这正好回答了我的问题。非常感谢。不用担心,因为某些原因,搜索不是很好,但在你发布问题后,它会神奇地发现相关问题。是的,这在这里有效。似乎我的原始函数不接受数据帧作为输入,但这个问题可以通过EdChum指出的相关问题来解决。这太糟糕了,因为当您可以将函数应用于整个系列而不是单个值时,性能会更好。我的函数如下所示
def getnumbers(x):返回re.findall('\d+',x)
并且数据帧值是类似于
“7:20”
的时间。然后可以使用
df[['v2','v3']=df['v1'].str.extract(r'(\d+)(\d+)
代替
getnumbers
。熊猫系列内置str方法:。谢谢!他们说我应该避免像这样的空评论,但你的帮助是非常有用的,非常感谢。
   v1  v2  v3
0   1   2   3
1   4   8  12
2  11  22  33