簡體   English   中英

Pandas數據框:使用另外2列創建一個新列,該列是自定義函數

[英]Pandas dataframe: creating a new column that is a custom function using 2 other columns

考慮以下數據集存儲在pandas DataFrame dfX

A   B
1   2
4   6
7   9

我有一個功能是:

def someThingSpecial(x,y)
  # z = do something special with x,y
  return z

我現在想在df中創建一個新列,其中包含計算出的z值

在其他SO示例中,我嘗試了幾種變體,包括:

dfX['C'] = dfX.apply(lambda x: someThingSpecial(x=x['A'], y=x['B']), axis=1)

哪個返回錯誤。 什么是正確的方法?

在v0.21上,這似乎對我有用。 看一看 -

df

   A  B
0  1  2
1  4  6
2  7  9

def someThingSpecial(x,y):
     return x + y


df.apply(lambda x: someThingSpecial(x.A, x.B), 1)

0     3
1    10
2    16
dtype: int64

您可能想嘗試將熊貓版本升級到最新的穩定版本(截至目前為0.21)。


這是另一個選擇。 您可以向量化您的功能。

v = np.vectorize(someThingSpecial)

v現在可以接受數組,但是可以分別對每對元素進行操作。 請注意,這就像應用一樣只是隱藏了循環,但是更加干凈。 現在,您可以這樣計算C了-

df['C'] = v(df.A, df.B)

如果您的函數僅需要一列的值,那么請執行此操作,而不是Coldspeed的答案:

dfX['A'].apply(your_func)

存儲它:

dfX['C'] = dfX['A'].apply(your_func)

暫無
暫無

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

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