2016-05-20 2 views
1

Я не очень хорошо осведомлен в пандпанды карта строка столбец с функцией

Так я проблема, которая заключается в следующем:

Я хочу, чтобы получить количество дней на основе строки столбца

Period 
3 days 
5 weeks 
1 year 

Я хочу, чтобы преобразовать этот столбец в целое число, которое является количество дней, как это:

Days 
3 
35 
365 

я сделал следующим образом:

def toDays(dt): 
    if 'year' in dt: 
     for s in dt: 
      if s.isdigit(): 
       return int(s)*360 
    elif 'month' in dt: 
     for s in dt: 
      if s.isdigit(): 
       return int(s)*30 
    elif 'week' in dt: 
     for s in dt: 
      if s.isdigit(): 
       return int(s)*7 
    if 'day' in dt: 
     for s in dt: 
      if s.isdigit(): 
       return int(s) 

train_file["Days"]=train_file["Periods"].map(toDays) 

, но это не сработало, я бы некоторую помощь для того, чтобы отобразить эту функцию в dataframe

ответ

3

код -

import pandas as pd 


def convert(s): 
    ls = s.split() 
    d = {'day': 1, 'week': 7, 'month': 30, 'year': 360} 
    for k, v in d.items(): 
     if ls[1].startswith(k): 
      return int(ls[0]) * v 

df = pd.DataFrame({'Col': ['3 days', '5 weeks', '1 year']}) 

df['Col'] = df['Col'].apply(convert) 

print(df) 

Выход -

Col 
0 3 
1 35 
2 360 
Смежные вопросы