簡體   English   中英

應用 lambda 或定義 function 以在 dask dataframe 中返回 1 else 0

[英]apply lambda or define a function to return 1 else 0 in dask dataframe

可能很容易,但我仍在學習。

我在 dask dataframe 中創建一個新列,在提取 str ddmmyyyy 中date列的最后四個 str 字符后,該值將來自該列。 我做了什么:

  1. have 是 inv_years 的列表
  2. 提取字符串日期的前四個字符
  3. 試圖定義一個 function,如果提取的年份在 inv_years 列表中,則在新列中返回 1 else 0。

問題:如何在更少的行中編寫有效的 function 或更好的 a lambda function

def valid_yr(x):
    inv_years = ['1921','1969','2026','2030','2041','2060','2062']
    validity_year = ddf['string_ddmmyyyy'].str[-4:] #extract the last four to get the year
    if validity_year.isin(inv_years): 
        x = 1
    else:
        x = 0
    return x

#create a new column and apply function
ddf['validity_year']= ??? # what to write here?

我能想到的一個非常脾氣暴躁的方法是

inv_years = ['1921','1969','2026','2030','2041','2060','2062']
ddf['validity_year'] = ddf.apply(lambda row: 1 if row.string_ddmmyyyy[-4:] in inv_years else 0, axis=1)

或者為了嘗試讓您的方法發揮作用,我們最初對您的 function 進行了一些修改,因為它的參數是一行。

def valid_yr(row):
    inv_years = ['1921','1969','2026','2030','2041','2060','2062']
    validity_year = row.string_ddmmyyyy[-4:]
    if validity_year in inv_years:
        x = 1
    else:
        x = 0
    return x

現在我們可以將這個 function 應用於所有行。

ddf['validity_year'] = ddf.apply(valid_yr, axis=1)

暫無
暫無

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

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