簡體   English   中英

Pandas基於兩個現有變量創建一個新變量

[英]Pandas creating a new variable based on two existing variables

我認為以下代碼效率很低。 有沒有更好的方法在熊貓中進行這種類型的常見重新編碼?

df['F'] = 0
df['F'][(df['B'] >=3) & (df['C'] >=4.35)] = 1
df['F'][(df['B'] >=3) & (df['C'] < 4.35)] = 2
df['F'][(df['B'] < 3) & (df['C'] >=4.35)] = 3
df['F'][(df['B'] < 3) & (df['C'] < 4.35)] = 4

使用numpy.select並將布爾掩碼緩存到變量以獲得更好的性能:

m1 = df['B'] >= 3
m2 = df['C'] >= 4.35
m3 = df['C'] < 4.35
m4 = df['B'] < 3

df['F'] = np.select([m1 & m2, m1 & m3, m4 & m2, m4 & m3], [1,2,3,4], default=0)

在您的特定情況下,您可以利用布爾實際上是整數(False == 0,True == 1)並使用簡單算術的事實:

df['F'] = 1 + (df['C'] < 4.35) + 2 * (df['B'] < 3)

請注意,這將忽略BC列中的任何NaN,這些將被指定為高於您的限制。

暫無
暫無

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

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