簡體   English   中英

嘗試通過使用 if 語句過濾另一列在 pandas dataframe 中創建一個新列

[英]Trying to make a new column in pandas dataframe by filtering another column using a if statement

試圖在我的 pandas dataframe 上創建一個名為 loan_status_is_great 的列。 如果loan_status 是“當前”或“全額支付”,它應該包含integer 1。 否則它應該包含 integer 0。

我使用https://resources.lendingclub.com/LoanStats_2018Q4.csv.zip作為我的數據集。

我的問題代碼是:

def loan_great():
   if (df['loan_status']).any == 'Current' or (df['loan_status']).any == 'Fully Paid':
     return 1
   else:
     return 0

df['loan_status_is_great']=df['loan_status'].apply(loan_great())

() 中的 TypeError Traceback (最近一次調用最后一次) ----> 1 df['loan_status_is_great']=df['loan_status'].apply(loan_great())

/usr/local/lib/python3.6/dist-packages/pandas/core/series.py in apply(self, func, convert_dtype, args, **kwds) 4043 else: 4044 values = self.astype(object)。 values -> 4045 mapped = lib.map_infer(values, f, convert=convert_dtype) 4046 4047 if len(mapped) and isinstance(mapped[0], Series):

pandas._libs.lib.map_infer() 中的 pandas/_libs/lib.pyx

類型錯誤:'int' object 不可調用

讓我們嘗試一種不同的方法,使用isin創建 boolean 系列並轉換為 integer:

df['loan_status'].isin(['Current','Fully Paid']).astype(int)

我發現 numpy 其中 function 是這些簡單列創建的不錯選擇,同時保持良好的速度。 像下面這樣的東西應該可以工作:

import numpy as np
df['loan_status_is_great'] = np.where(df['loan_status']=='Current'|
                                      df['loan_status']=='Fully Paid',
                                      1,
                                      0)

暫無
暫無

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

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