Python 如何在pandas中一次编辑/向数据帧添加两列-df.apply()

Python 如何在pandas中一次编辑/向数据帧添加两列-df.apply(),python,pandas,apply,Python,Pandas,Apply,所以我一直在对熊猫做这样的事情: usrdata['columnA'] = usrdata.apply(functionA, axis=1) 以便执行行操作和更改/添加列到我的数据帧。 但是,现在我想尝试这样做: usrdata['columnB', 'columnC'] = usrdata.apply(functionB, axis=1) 但是函数B的输出显然是一个在元组中只有一列的序列(每行有两个值)。有没有一个好方法可以让我: 格式化functionB的输出,以便可以随时将其添加到我的

所以我一直在对熊猫做这样的事情:

usrdata['columnA'] = usrdata.apply(functionA, axis=1)
以便执行行操作和更改/添加列到我的数据帧。 但是,现在我想尝试这样做:

usrdata['columnB', 'columnC'] = usrdata.apply(functionB, axis=1)
但是函数B的输出显然是一个在元组中只有一列的序列(每行有两个值)。有没有一个好方法可以让我:

  • 格式化functionB的输出,以便可以随时将其添加到我的 数据帧
  • 添加(并且可能必须解包)functionB的输出,并将每一列分配给我的数据帧的每一列

  • 尝试使用
    zip

    usrdata['columnB'], usrdata['columnC'] = zip(*usrdata.apply(functionB, axis=1))
    

    我将直接分配给由新df组成的df,并修改func主体以返回一个由数据列表构成的序列:

    In [9]:
    
    df = pd.DataFrame({'a':[1, 2, 3, 4, 5]})
    df
    Out[9]:
       a
    0  1
    1  2
    2  3
    3  4
    4  5
    In [10]:
    
    def func(x):
        return pd.Series([x*3, x*10])
    ​
    df[['b','c']] = df['a'].apply(func)
    df
    Out[10]:
       a   b   c
    0  1   3  10
    1  2   6  20
    2  3   9  30
    3  4  12  40
    4  5  15  50