gpt4 book ai didi

python - 将 Pandas 函数应用于列以创建多个新列?

转载 作者:IT老高 更新时间:2023-10-28 12:23:35 24 4
gpt4 key购买 nike

如何在 Pandas 中做到这一点:

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

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

所以我认为我需要退回到使用 df.iterrows() 进行迭代,根据 this ?

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

更新 2:这个问题是在 v0.11.0 附近被问到的。 , 在可用性之前 df.apply已改进或 df.assign() added in v0.16 .因此,很多问题和答案都不太相关。

最佳答案

我通常使用 zip:

>>> df = pd.DataFrame([[i] for i in range(10)], columns=['num'])
>>> df
num
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9

>>> def powers(x):
>>> return x, x**2, x**3, x**4, x**5, x**6

>>> df['p1'], df['p2'], df['p3'], df['p4'], df['p5'], df['p6'] = \
>>> zip(*df['num'].map(powers))

>>> df
num 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

关于python - 将 Pandas 函数应用于列以创建多个新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16236684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com