我正在使用pandas库,我想将两个新列添加到df具有n列(n> 0)的数据框中。 这些新列是由于将函数应用于数据框中的某一列而产生的。
df
要应用的功能如下:
def calculate(x): ...operate... return z, y
为仅返回值的函数创建新列的一种方法是:
df['new_col']) = df['column_A'].map(a_function)
所以,我想要的但尝试失败的(*)是这样的:
(df['new_col_zetas'], df['new_col_ys']) = df['column_A'].map(calculate)
实现此目的的最佳方法是什么?我毫无头绪地扫描了文档。
*df['column_A'].map(calculate)返回一个熊猫系列,每个项目都由一个元组z,y组成。尝试将其分配给两个数据框列会产生ValueError。
df['column_A'].map(calculate)
我只用zip:
zip
In [1]: from pandas import * In [2]: def calculate(x): ...: return x*2, x*3 ...: In [3]: df = DataFrame({'a': [1,2,3], 'b': [2,3,4]}) In [4]: df Out[4]: a b 0 1 2 1 2 3 2 3 4 In [5]: df["A1"], df["A2"] = zip(*df["a"].map(calculate)) In [6]: df Out[6]: a b A1 A2 0 1 2 2 3 1 2 3 4 6 2 3 4 6 9