Python 基于数据帧的字段计算范围

Python 基于数据帧的字段计算范围,python,pandas,numpy,Python,Pandas,Numpy,我有一个熊猫数据框 import pandas as pd import numpy as np d = pd.DataFrame({ 'col': ['A', 'B', 'C', 'D'], 'start': [1, 4, 6, 8], 'end': [4, 9, 10, 12] }) 我试图根据开始和结束字段计算一个范围字段,使其值为 [1, 2, 3, 4] [4, 5, 6, 7, 8, 9] [6, 7, 8, 9, 10] [

我有一个熊猫数据框

import pandas as pd
import numpy as np 

d = pd.DataFrame({
       'col': ['A', 'B', 'C', 'D'],
       'start': [1, 4, 6, 8], 
       'end': [4, 9, 10, 12]
    })
我试图根据开始和结束字段计算一个范围字段,使其值为

[1, 2, 3, 4]
[4, 5, 6, 7, 8, 9]
[6, 7, 8, 9, 10]
[8, 9, 10, 11, 12]
我尝试了以下几种选择

d['range_'] = np.arange( d.start, d.end, 1)


d['range_'] = range(d['start'], d['end']) 
但是得到以下错误

ValueError:序列的真值不明确。使用a.empty、a.bool、a.item、a.any或a.all

TypeError:“Series”对象不能解释为整数请尝试以下操作:

d.apply(lambda x: np.arange(x['start'], x['end']+1), axis=1)
输出:

0          [1, 2, 3, 4]
1    [4, 5, 6, 7, 8, 9]
2      [6, 7, 8, 9, 10]
3    [8, 9, 10, 11, 12]
dtype: object
注意:np.arange和range不是为接受pd.Series而设计的,因此您可以使用apply rowwise创建范围。

尝试以下操作:

d.apply(lambda x: np.arange(x['start'], x['end']+1), axis=1)
输出:

0          [1, 2, 3, 4]
1    [4, 5, 6, 7, 8, 9]
2      [6, 7, 8, 9, 10]
3    [8, 9, 10, 11, 12]
dtype: object
注意:np.arange和range不是为接受pd.Series而设计的,因此您可以使用apply rowwise创建范围。

IIUC

l = [list(range(x,y+1)) for x , y in zip(d.start,d.end)]
[[1, 2, 3, 4], [4, 5, 6, 7, 8, 9], [6, 7, 8, 9, 10], [8, 9, 10, 11, 12]]
d['range_']=l
IIUC