我有一个列表的数据框架,看起来与下面的列表相似(图a).有一个键列,后跟n列,其中包含列表.我期望的结果示例如图B所示.

我try 了一些iteritems()方法,但这些数据帧可能有几十万到数百万行的长度,这使得速度非常慢.因此,我试图避免使用这种解决方案.

我想使用类似于this SO post中的列表理解的东西,但我还无法将其用于Pandas .

# example data
data = {'key': ['1_1', '1_2', '1_3'],
        'valueA': [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18]],
        'valueB': [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18]],
        'valueN': [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18]]}
dataSet = pd.DataFrame(data)

图A

enter image description here

图B

enter image description here

编辑:我真的很感谢迄今为止我得到的所有答案!我目前正在对全尺寸数据集上的每个数据集进行判断和计时,这样我就可以找出在这种情况下哪一个最有效.我将很快更新我的结果!

编辑2:我在几个较大的数据集上测试了这里提供的主要解决方案,其平均时间如下.

# Lambda/Apply a nested list comprehension
shakiba.mrd: 1.12 s

# Sum columns
jfaccioni: 2.21 s

# Nested list comprehension with iterrows
mozway: 0.95 s

# Adding column lists together
politinsa: 3.50 s

再次感谢大家的贡献!

推荐答案

可以使用嵌套列表理解:

dataSet['combined'] = [[e for l in x for e in l]
                       for _,x in dataSet.filter(like='value').iterrows()]

输出:

   key                    valueA                    valueB                    valueN                                                                  combined
0  1_1        [1, 2, 3, 4, 5, 6]        [1, 2, 3, 4, 5, 6]        [1, 2, 3, 4, 5, 6]                    [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
1  1_2     [7, 8, 9, 10, 11, 12]     [7, 8, 9, 10, 11, 12]     [7, 8, 9, 10, 11, 12]           [7, 8, 9, 10, 11, 12, 7, 8, 9, 10, 11, 12, 7, 8, 9, 10, 11, 12]
2  1_3  [13, 14, 15, 16, 17, 18]  [13, 14, 15, 16, 17, 18]  [13, 14, 15, 16, 17, 18]  [13, 14, 15, 16, 17, 18, 13, 14, 15, 16, 17, 18, 13, 14, 15, 16, 17, 18]

重复添加的计时比较(100行、100列、每个列表1000项):

# repeated addition of the lists
8.66 s ± 309 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

# nested list comprehension
729 ms ± 285 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

Python相关问答推荐

如何从具有不同len的列表字典中创建摘要表?

在线条上绘制表面

切片包括面具的第一个实例在内的眼镜的最佳方法是什么?

如何使用它?

在Python中动态计算范围

如何让这个星型模式在Python中只使用一个for循环?

关于Python异步编程的问题和使用await/await def关键字

在极性中创建条件累积和

给定高度约束的旋转角解析求解

Pandas Data Wrangling/Dataframe Assignment

如何使用正则表达式修改toml文件中指定字段中的参数值

有没有办法让Re.Sub报告它所做的每一次替换?

将数字数组添加到Pandas DataFrame的单元格依赖于初始化

有没有一种方法可以在朗肯代理中集成向量嵌入

类型对象';敌人';没有属性';损害';

函数()参数';代码';必须是代码而不是字符串

如何将ManyToManyfield用于Self类

Pip:卸载`-e`安装过程中安装的所有pkgs

如何判断变量可调用函数的参数是否都属于某个子类?

安装PyTorch时出现CondaVerificationError