![](/img/trans.png)
[英]Create new column in dataframe based on conditions in existing columns
[英]How to create a new column based on conditions in the existing columns in a dataframe in python?
我有一個如下所示的 dataframe:
df:
PAN_NO COST_VALUE
AAA -0.001
BBB 2938080
CCC 49224091
DDD 100
EEE 50236272.32
我正在嘗試根據以下條件創建一個新列:
如果 df['cost_value'] >=0.001 且 df['cost_value'] <= 299985.0 那么 cost_value_group 應該是 1
如果 df['cost_value'] > 299985.0 並且 df['cost_value'] <= 2938082.40 那么 cost_value_group 應該是 2
如果 df['cost_value'] > 2938082.40 並且 df['cost_value'] <= 17399130.0 那么 cost_value_group 應該是 3
如果 df['cost_value'] > 2938082.40 並且 df['cost_value'] <= 17399130.0 那么 cost_value_group 應該是 3
如果 df['cost_value'] > 17399130.0 並且 df['cost_value'] <= 49224091.375 那么 cost_value_group 應該是 4
如果 df['cost_value'] > 49224091.375 cost_value_group 應該是 5
否則它應該是 6
EXPECTED OUTPUT:
PAN_NO COST_VALUE COST_VALUE_Group
AAA -0.001 1
BBB 2938080 2
CCC 49224091 5
DDD 100 1
EEE 50236272.32 6
我試着做:
def cost_value(x):
if df['cost_value'] >= -0.001 and df['cost_value'] <= 299985.0:
return 1
elif df['cost_value'] > 299985.0 and df['cost_value'] <= 2938082.40:
return 2
elif df['cost_value'] > 2938082.40 and df['cost_value'] <= 17399130.0:
return 3
elif df['cost_value'] > 17399130.0 and df['cost_value'] <= 49224091.375:
return 4
elif df['cost_value'] > 49224091.375:
return 5
else:
return 6
df['cost_value_group] = df['cost_value].apply(cost_value)
我收到一個值錯誤,表明系列的真實值不明確。
有人可以幫助我嗎?
你走在正確的道路上。
嘗試這個:
df['cost_value_group'] = df['cost_value'].apply(lambda x: cost_value(x))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.