如何一次编辑/添加两个列到pandas中的数据框 - df.apply()

时间:2015-05-08 23:15:23

标签: python pandas apply

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

usrdata['columnA'] = usrdata.apply(functionA, axis=1)

为了执行行操作并将列更改/添加到我的数据帧。 但是,现在我想尝试做这样的事情:

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

但是函数B的输出显然是一个元组中只有一列的元组(每行有两个值)。对我来说,有一个很好的方式:

  1. 格式化functionB的输出,以便它可以很容易地添加到我的 数据帧
  2. 添加(并且可能需要解压缩)来自functionB的输出,并将每个列分配给我的数据帧的每一列?

2 个答案:

答案 0 :(得分:1)

尝试使用zip

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

答案 1 :(得分:0)

我会直接指定一个由你的新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