2016-05-20 6 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) 

が、それはうまくいきませんでしたIだろうデータフレーム

答えて

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 
関連する問題