是否将函数应用于列以创建多个新列?

如何在熊猫身上做到这一点:

我在单个文本列上有一个函数extract\u text\u features,返回多个输出列。具体来说,该函数返回6个值

该函数可以工作,但是似乎没有任何正确的返回类型(pandas DataFrame/numpy array/Python list),因此可以正确分配输出df.ix[:,10:16]=df.textcol.map(extract\u text\u features)

因此,我认为我需要回到使用df.iterrows()进行迭代,如下所示

更新:
使用df.iterrows()进行迭代至少要慢20倍,因此我放弃并将函数分成六个不同的.map(lambda…调用)

更新2:这个问题在v0.11.0前后被问回。因此,大部分问题和答案都不太相关

我通常使用zip

&gt&燃气轮机&燃气轮机;df=pd.DataFrame([[i]表示范围(10)中的i),列=['num'])
&燃气轮机&燃气轮机&燃气轮机;df
号码
0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9
&燃气轮机&燃气轮机&燃气轮机;def功率(x):
&燃气轮机&燃气轮机&燃气轮机;返回x,x**2,x**3,x**4,x**5,x**6
&燃气轮机&燃气轮机&燃气轮机;测向['p1'],测向['p2'],测向['p3'],测向['p4'],测向['p5'],测向['p6']=\
&燃气轮机&燃气轮机&燃气轮机;zip(*df['num'].map(幂))
&燃气轮机&燃气轮机&燃气轮机;df
数量p1 p2 p3 p4 p5 p6
0       0       0       0       0       0       0       0
1       1       1       1       1       1       1       1
2       2       2       4       8       16      32      64
3       3       3       9       27      81      243     729
4       4       4       16      64      256     1024    4096
5       5       5       25      125     625     3125    15625
6       6       6       36      216     1296    7776    46656
7       7       7       49      343     2401    16807   117649
8       8       8       64      512     4096    32768   262144
9       9       9       81      729     6561    59049   531441

发表评论