簡體   English   中英

如何根據python中現有列中的條件創建新列?

[英]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.

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