从经过筛选的tup列表构建数据帧

2024-10-04 11:25:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两张单子

kuid -> ['LOdRTFfn', 'Lckq4LkU', 'LcsYHodm']

NN是元组列表,其中第一个元素是kuid的索引列表,另一个元素是值数组

NN -> [([0, 1, 2], [0.0, 1.2, 1.4]), ([1, 0, 2], [0.0, 1.4, 1.4]), ([2, 0, 1], [0.0, 1.1, 1.4])]

我只想保留值小于1.3的索引,例如:

[([0, 1], [0.0, 1.2]), ([1], [0.0]), ([2, 0], [0.0, 1.1])]

然后获取正确的kuid值并构建一个数据帧:

   kuid      la                    lametric                 
0  LOdRTFfn  [LOdRTFfn, Lckq4LkU]  [0.0, 1.2] 
1  Lckq4LkU  [Lckq4LkU]            [0.0]
2  LcsYHodm  [LcsYHodm, LOdRTFfn]  [0.0, 1.1]

有没有可能通过理解列表(或其他快速解决方案)来避免循环?阵列可能非常大

多谢各位


Tags: 数据元素列表nn数组解决方案la单子
1条回答
网友
1楼 · 发布于 2024-10-04 11:25:28

这里有一条路

In [1789]: df = pd.DataFrame(dict(kuid=kuid, NN=[np.array(x) for x in NN]))

In [1790]: df['lametric'] = df.NN.apply(lambda x: x[1][x[1] < 1.3])

In [1791]: df['la'] = df.NN.apply(lambda x: [kuid[int(i)] for i in x[0][x[1] < 1.3]])

In [1792]: df
Out[1792]:
                                   NN      kuid    lametric  \
0  [[0.0, 1.0, 2.0], [0.0, 1.2, 1.4]]  LOdRTFfn  [0.0, 1.2]
1  [[1.0, 0.0, 2.0], [0.0, 1.4, 1.4]]  Lckq4LkU       [0.0]
2  [[2.0, 0.0, 1.0], [0.0, 1.1, 1.4]]  LcsYHodm  [0.0, 1.1]

                     la
0  [LOdRTFfn, Lckq4LkU]
1            [Lckq4LkU]
2  [LcsYHodm, LOdRTFfn]

相关问题 更多 >