我正在寻找一种有效的方法来连接和合并 pandas DataFrame 中关于某些标准的行
Posted
技术标签:
【中文标题】我正在寻找一种有效的方法来连接和合并 pandas DataFrame 中关于某些标准的行【英文标题】:I am looking for an efficient approach to concatenate and merge rows in pandas DataFrame with regard to some criteria 【发布时间】:2017-07-24 10:47:47 【问题描述】:我正在为 pandas 中的数据集编写代码。为了简化我的问题,假设 L_1=2, 5, 8, 19 (L_1 中的元素按升序排序)。我想知道基于L1,如何生成另一个集合L_2 = (2,5), (2,8), (2,19), (5,8), (5,19), (8,19) 。那么,基于L2,如何再次生成另一个集合L_3 = (2,5,8), (2,5,19), (2,8,19), (5,8,19)。再次,基于L_3,如何生成L_4 = (2,5,8,19)。因此,从 L_(k-1) 生成 L_k 的基本思想是
1) L_k 中的每个元素都是一个 k 元组 (a_1,...,a_k) 使得 a_1
2) 如果 (a_1,...,a_(k-1)) 和 (b_1,...,b_(k-1)) 属于 L_(k-1),那么它们可以合并为如果 a_i = b_i, i = 1,..., k-2 和 a_(k-1)
我想知道如何通过 pandas 有效地生成上述集合,因为 L_1 可能有超过 10 万个元素。谢谢!
【问题讨论】:
【参考方案1】:这应该可以满足您的需求:
l1 = [2, 5, 8, 19]
l2 = [(i, j) for i in l1 for j in l1[l1.index(i)+1:]]
l3 = [(i, j, k) for i, j in l2 for k in l1[l1.index(j)+1:]]
l4 = [(i, j, k, l) for i, j, k in l3 for l in l1[l1.index(k)+1:]]
【讨论】:
谢谢 zipa。事实上,索引 i,j,k, ... 的数量可以达到 100k。我尽量避免这种情况。以上是关于我正在寻找一种有效的方法来连接和合并 pandas DataFrame 中关于某些标准的行的主要内容,如果未能解决你的问题,请参考以下文章