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

,但没有工作,我会为了这个函数映射到数据帧

回答

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