微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python-使用熊猫在DataFrame中创建一个由列表组成的新列

给定以下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较长,因此我正在寻找速度.谢谢.

解决方法:

这是使用NumPy方法的矢量化方法-

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 举报,一经查实,本站将立刻删除。

相关推荐