【发布时间】:2020-06-15 05:24:45
【问题描述】:
我有一个用例,我将同一列中的列表与其自身进行比较,代码如下:
for i in range(0,len(counts95)):
for j in range(i+1,len(counts95)):
for x in counts95['links'][i]:
for y in counts95['links'][j]:
if x == y and counts95['linkoflinks'][j] is None:
counts95['linkoflinks'][j] = counts95['index'][i]
代码可以运行,但它对 python 不友好(使用 4 个 for 循环)并且需要大量时间来执行操作。 它背后的主要思想是将列表中的元素 counts95['links'] 的记录链接在任何后续行中,如果是,则将列 linksoflinks 更新为仅当 linksoflinks 列为 None (不覆盖)
时,第一列的索引找到下面的参考表:
counts95 = pd.DataFrame({'index': [616351, 616352, 616353,6457754],
'level0': [25,30,35,100],
'links' : [[1,2,3,4,5],[23,45,2],[1,19,67],[14,15,16]],
'linksoflinks' : [None,None,None,None]})
编辑: 新数据框
counts95 = pd.DataFrame({'index': [616351, 616352, 616353,6457754,6566666,464664683],
'level0': [25,30,35,100,200,556],
'links' : [[1,2,3,4,5],[23,45,2],[1,19,67],[14,15,16],[1,14],[14,1]],
'linksoflinks' : [None,None,None,None,None,None]})
期望的输出:
index level0 links linksoflinks
0 616351 25 [1, 2, 3, 4, 5] NaN
1 616352 30 [23, 45, 2] 616351.0
2 616353 35 [1, 19, 67] 616351.0
3 6457754 100 [14, 15, 16] NaN
4 6566666 200 [1,14] 616351.0
5 6457754 556 [14,1] 616351.0
【问题讨论】:
-
请分享数据而不是图片。 stackoverflow.com/questions/20109391/…
-
编辑问题以包含参考表示例
标签: python python-3.x pandas list