小编典典

将熊猫函数应用于列以创建多个新列?

all

如何在熊猫中做到这一点:

extract_text_features在单个文本列上有一个函数,返回多个输出列。具体来说,该函数返回 6 个值。

该函数有效,但是似乎没有任何正确的返回类型(pandas DataFrame/numpy array/Python
列表),以便可以正确分配输出df.ix[: ,10:16] = df.textcol.map(extract_text_features)

所以我想我需要回到迭代df.iterrows(),按照这个

更新:迭代df.iterrows()至少慢 20 倍,所以我放弃并将函数拆分为六个不同的.map(lambda ...)调用。

更新 2:在可用性得到改进或添加到 v0.16之前,这个问题被问到 v0.11.0
左右。因此,许多问题和答案都不太相关。df.applydf.assign()


阅读 67

收藏
2022-04-22

共1个答案

小编典典

根据 user1827356 的答案,您可以使用以下方法一次性完成作业df.merge

df.merge(df.textcol.apply(lambda s: pd.Series({'feature1':s+1, 'feature2':s-1})), 
    left_index=True, right_index=True)

    textcol  feature1  feature2
0  0.772692  1.772692 -0.227308
1  0.857210  1.857210 -0.142790
2  0.065639  1.065639 -0.934361
3  0.819160  1.819160 -0.180840
4  0.088212  1.088212 -0.911788

编辑: 请注意巨大的内存消耗和低速:https ://ys-l.github.io/posts/2015/08/28/how-not-to-use-
pandas-apply/ !

2022-04-22