给定以下DataFrame:
t
0 3
1 5
我想创建一个新列,其中wach条目是一个列表,该列表是其所在行的函数.特别是它应该具有一个列表,该列表包含不小于t列中条目的所有正整数.因此输出应为:
t newCol
0 3 [1,2,3]
1 5 [1,2,3,4,5]
换句话说,我想将list(range(1,t 1))应用于每一行.我知道如何循环执行,但是DataFrame较长,因此我正在寻找速度.谢谢.
解决方法:
a = df.t.values
idx = a.cumsum()
id_arr = np.ones(idx[-1],dtype=int)
id_arr[idx[:-1]] = -a[:-1]+1
df['newCol'] = np.split(id_arr.cumsum(),idx[:-1])
样品运行-
In [76]: df
Out[76]:
t newCol
0 4 [1, 2, 3, 4]
1 3 [1, 2, 3]
2 7 [1, 2, 3, 4, 5, 6, 7]
3 2 [1, 2]
4 5 [1, 2, 3, 4, 5]
5 3 [1, 2, 3]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。