如何一次 edit/add 两列到 pandas 中的数据框 - df.apply()

How to edit/add two columns to a dataframe in pandas at once - df.apply()

所以我一直在用 pandas 做这样的事情:

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

为了对我的数据框进行行操作和 changing/adding 列操作。 但是,现在我想尝试做这样的事情:

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

但是函数 B 的输出显然是一个元组中只有一列的系列(每行有两个值)。有没有什么好的方法可以让我:

  1. 格式化函数 B 的输出,以便它可以很容易地添加到我的 数据框
  2. 添加(并且可能必须解压缩)functionB 的输出并将每一列分配给我的数据框的每一列?

尝试使用 zip:

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

我会直接分配给一个由你的新 df 组成的 df,并将 func 主体修改为 return 一个由数据列表构成的系列:

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