给定此样本数据:
Claimant Zan_start_yr Zan_end_yr
0 Joe 1980 1985
1 mary 1995 2001
2 martha 2000 2002
我正在尝试创建一个列,其中包含Zan开始日期和结束日期之间的所有日期列表。
我尝试了这个和其他事情,不断得到各种错误:
df['zan_yr_range_list'] = list(range(df['Zan_start_yr'].astype('int') , df['Zan_end_yr'].astype('int')))
TypeError:"Series"对象不能被解释为整数
理想的结果是:
Claimant Zan_start_yr Zan_end_yr Zan_yr_range_list
0 Joe 1980 1985 [1980, 1981, 1982, 1983, 1984, 1985]
1 mary 1995 2001 [1995, 1996, 1997, 1998, 1999, 2000, 2001]
2 martha 2000 2002 [2000, 2001, 2002]
我的数据可能是年份字符串,在列表中创建这列年份之前,我必须首先将其转换为整数。
您需要执行zip
df['zan_yr_range_list'] = [list(range(x,y)) for x , y in zip(df['Zan_start_yr'].astype('int'),df['Zan_end_yr'].astype('int'))]
您也可以使用列表函数直接分配序列。
import pandas as pd
df = pd.DataFrame({'Claimant': ['Joe','mary','martha'], 'Zan_start_yr': ['1980', '1995', '2000'],'Zan_end_yr': ['1985', '2001', '2002']})
df['Zan_yr_range_list'] = [list(range(i, j+1)) for i, j in df[['Zan_start_yr', 'Zan_end_yr']].astype(int).values]