Python 基于两列创建范围

Python 基于两列创建范围,python,pandas,range,Python,Pandas,Range,我有以下数据集 Out[121]: a b 0 1 3 1 2 4 并希望生成一列,列的数字范围为a和b。因此: Out[128]: a b range 0 1 3 [1, 2, 3] 1 2 4 [2, 3, 4] 既然你提到了范围 df['range']=df.apply(lambda x : list(range(x['a'],x['b']+1)),1) df Out[242]: a b range 0 1 3

我有以下数据集

Out[121]: 
   a  b
0  1  3
1  2  4
并希望生成一列,列的数字范围为a和b。因此:

Out[128]: 
   a  b      range
0  1  3  [1, 2, 3]
1  2  4  [2, 3, 4] 

既然你提到了
范围

df['range']=df.apply(lambda x : list(range(x['a'],x['b']+1)),1)
df
Out[242]: 
   a  b      range
0  1  3  [1, 2, 3]
1  2  4  [2, 3, 4]
请注意,您可以使用此选项来加速(替换
应用


您可以使用列表来理解这一点。您可能会发现这比pd.DataFrame.apply更有效

df['range'] = [list(range(i, j+1)) for i, j in df.values]
结果:

   a  b      range
0  1  3  [1, 2, 3]
1  2  4  [2, 3, 4]
这是因为:

  • 您可以通过列表直接指定序列
  • df.values
    返回数据帧的
    numpy
    数组表示形式,当您迭代时,它返回每行的内容
  • 如果您有更多的列,只需使用
    df[['a','b']]。值
   a  b      range
0  1  3  [1, 2, 3]
1  2  4  [2, 3, 4]