我試圖在熊貓數據框中創建一個新列,然後根據條件格式分配一個整數值。一個例子是:熊貓DataFrame:如果滿足多個條件,則將整數分配給新列
如果((A> 1)&(一個< 5))得到值10,如果((A> = 5)&(一個< 10))得到的值24,如果((一> 10)&(a < 5))給出值57
其中'a'是數據框中的另一列。
有沒有辦法做到這一點與熊貓/ numpy沒有創建一個函數?我嘗試了幾種不同的選擇,但都沒有成功
我試圖在熊貓數據框中創建一個新列,然後根據條件格式分配一個整數值。一個例子是:熊貓DataFrame:如果滿足多個條件,則將整數分配給新列
如果((A> 1)&(一個< 5))得到值10,如果((A> = 5)&(一個< 10))得到的值24,如果((一> 10)&(a < 5))給出值57
其中'a'是數據框中的另一列。
有沒有辦法做到這一點與熊貓/ numpy沒有創建一個函數?我嘗試了幾種不同的選擇,但都沒有成功
我想這樣做,而無需創建功能將是非常迂迴的任何方式,但它實際上不是太糟糕了功能。此外,你的條件並不真正相互關聯,但我認爲這是一個錯字。如果你的條件比較簡單,可以快速定義你的功能,讓您的代碼緊湊:
df['new column'] = df['a'].apply(lambda x: 10 if x < 5 else 24 if x < 10 else 57)
,可以得到一點毛茸茸的,如果你的條件,更complicatied - 這是更容易,如果你定義的功能來管理更明確:
def f(x):
if x > 1 and x < 5: return 10
elif x >= 5 and x < 10: return 14
else: return 57
df['new column'] = df['a'].apply(f)
如果你真的想避免的功能,我能想到的是創建一個新的列表爲新柱,通過你的數據迭代,然後將它添加到您的數據框填充它的最好的:
newcol = []
for a in df['a'].values:
if x > 1 and x < 5: newcol.append(10)
elif x >= 5 and x < 10: newcol.append(24)
else: newcol.append(57)
df['newcol'] = newcol
發佈您的數據框的例子會有所幫助。可能很難理解這個。數據框中的'a'是另一列嗎?或一些隨機變量? – Abhishek