例如,我有以下資料幀:
| 一個標題 | 標題。1 | 標題。2 | 標題。3 |
|---|---|---|---|
| 第一的 | 111 | 121 | 323 |
| 第二 | 222 | 212 | 232 |
我希望我的新列基于以下 if 條件:如果(df.header1 中的值 > 大于 0,然后加 2)和(df.header2 中的值在 2 和 3 之間,然后加 5)和(值在df.header3 和 < 400,然后添加 11)
所以我的新 df 看起來像這樣:
| 一個標題 | 標題。1 | 標題。2 | 標題。3 | 條件頭 |
|---|---|---|---|---|
| 第一的 | 111 | 121 | 323 | 13 |
| 第二 | 222 | 212 | 232 | 12 |
uj5u.com熱心網友回復:
根據您的邏輯使用:
df['output'] = (df['header.1'].gt(0) * 2
df['header.2'].between(2,3) * 5
df['header.3'].lt(400) * 11 )
輸出:
A header header. 1 header. 2 header. 3 output
0 First 111 121 323 13
1 Second 222 212 232 13
我不確定您如何獲得預期的輸出。
uj5u.com熱心網友回復:
df['condition_head'] = 0
df['condition_head'] = 2 * (df['header.1'] > 0)
df['condition_head'] = 5 * (df['header.2'] > 2 and df['header.2'] < 3)
df['condition_head'] = 11 * (df['header.3'] > 400)
uj5u.com熱心網友回復:
嘗試使用df.apply()和自定義helper函式:
def helper(x):
ans= 0
if 0< x['header.1']:
ans =2
if 2< x['header.2']<=3:
ans =5
if x['header.3']<400:
ans =11
return ans
df['contition_head'] = df.apply(helper, axis=1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/345079.html
標籤:熊猫
下一篇:解聚合表并隨機化日期時間
