Pandas-创建一列,其中包含其他两列中存在的起始年和结束年之间的所有年份的列表



给定此样本数据:

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]

最新更新