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]