簡體   English   中英

Pandas:根據列中的值向DataFrame添加新列

[英]Pandas: Add new columns to DataFrame based on values in columns

給定一個像這樣的DataFrame:

>>> df
    0   1   2
0   2   3   5
1   3   4   7

和一個返回多個結果的函數,如下所示:

def sumprod(x, y, z):
    return x+y+z, x*y*z

我想添加新列,結果將是:

>>> df
    0   1   2  sum  prod
0   2   3   5   10    30
1   3   4   7   14    84

我已成功使用返回一個結果的函數:

df["sum"] = p.apply(sum, axis=1)

但如果它返回多個結果則不會。

一種方法是通過解壓縮數組的轉置將DataFrame的列傳遞給函數:

>>> df['sum'], df['prod'] = sumprod(*df.values.T)
>>> df
   0  1  2  sum  prod
0  2  3  5   10    30
1  3  4  7   14    84

sumprod返回一個列元組,由於Python支持多個賦值,您可以將它們分配給新的列標簽,如上所述。

你可以寫df['sum'], df['prod'] = sumprod(df[0], df[1], df[2])來得到相同的結果。 這更清楚,如果您需要以特定順序將列傳遞給函數,則更為可取。 另一方面,如果你有很多列要傳遞給函數,那就更加冗長了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM