基于索引从大熊猫系列列表中提取到另一个大熊猫系列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于索引从大熊猫系列列表中提取到另一个大熊猫系列相关的知识,希望对你有一定的参考价值。

我有2个系列的pandas数据框,每个包含2d数组,a是第一个不同长度的系列子数组

a: 
0 [[1,2,3,4,5,6,7,7],[1,2,3,4,5],[5,9,3,2]]
1 [[1,2,3],[6,7],[8,9,10]]

而b是第二个但它的子阵列只有一个像

b:
 0 [[0],[2],[3]]
 1 [ [1],[0],[1]]

我想基于b中给出的索引提取系列的元素。上面例子的结果应该是:

0 [1,3,2]
1 [2, 6, 9]

有人可以帮忙吗?非常感谢

答案

建立

a = pd.Series({0: [[1, 2, 3, 4, 5, 6, 7, 7], [1, 2, 3, 4, 5], [5, 9, 3, 2]],
               1: [[1, 2, 3], [6, 7], [8, 9, 10]]})

b = pd.Series({0: [[0], [2], [3]], 1: [[1], [0], [1]]})

由于您有不同大小的列表,因此很难提高效率,但这里是使用列表推导和zip的解决方案:

out = pd.Series([[x[y] for x, [y] in zip(i, j)] for i, j in zip(a, b)])

0    [1, 3, 2]
1    [2, 6, 9]
dtype: object
另一答案

你可以使用applya索引b

df.apply(lambda row: [row.a[i][row.b[i][0]] for i in range(len(row[0]))], axis=1)   
0    [1, 3, 2]
1    [2, 6, 9]
dtype: object

数据:

data = {"a":[[[1,2,3,4,5,6,7,7],[1,2,3,4,5],[5,9,3,2]],
             [[1,2,3],[6,7],[8,9,10]]],
        "b": [[[0],[2],[3]], 
              [[1],[0],[1]]]}
df = pd.DataFrame(data)

以上是关于基于索引从大熊猫系列列表中提取到另一个大熊猫系列的主要内容,如果未能解决你的问题,请参考以下文章

将具有相同索引的熊猫系列列表转换为字典

如何有条件地从熊猫系列中选择项目

从熊猫系列中创建一个集合

删除熊猫系列中的空列表

从列表中替换熊猫系列的值

如何将熊猫系列转换为索引和值的元组