How to efficiently combine multiple pandas columns into one array-like column?(如何高效地将多个 pandas 列组合成一个阵列式的列?)
本文介绍了如何高效地将多个 pandas 列组合成一个阵列式的列?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用类似对象类型的列创建(或加载)DataFrame很容易,如下所示:
[In]: pdf = pd.DataFrame({
"a": [1, 2, 3],
"b": [4, 5, 6],
"c": [7, 8, 9],
"combined": [[1, 4, 7], [2, 5, 8], [3, 6, 9]]}
)
[Out]
a b c combined
0 1 4 7 [1, 4, 7]
1 2 5 8 [2, 5, 8]
2 3 6 9 [3, 6, 9]
我目前所处的位置是,我拥有作为单独列的值,我需要将这些值作为单个列返回,并且需要非常高效地这样做。是否有快速有效的方法将列合并为单个对象类型的列?
在上面的示例中,这意味着已经有列a
、b
和c
,我希望创建combined
。
我在网上找不到类似的问题示例,如果这是重复的,请随时链接。
推荐答案
对大数据使用NumPy比使用REST快得多
更新--列表理解的NumPy速度更快,仅需0.77秒
pdf['combined'] = [x for x in pdf[['a', 'b', 'c']].to_numpy()]
# pdf['combined'] = pdf[['a', 'b', 'c']].to_numpy().tolist()
速度比较
import pandas as pd
import sys
import time
def f1():
pdf = pd.DataFrame({"a": [1, 2, 3]*1000000, "b": [4, 5, 6]*1000000, "c": [7, 8, 9]*1000000})
s0 = time.time()
pdf.assign(combined=pdf.agg(list, axis=1))
print(time.time() - s0)
def f2():
pdf = pd.DataFrame({"a": [1, 2, 3]*1000000, "b": [4, 5, 6]*1000000, "c": [7, 8, 9]*1000000})
s0 = time.time()
pdf['combined'] = [x for x in pdf[['a', 'b', 'c']].to_numpy()]
# pdf['combined'] = pdf[['a', 'b', 'c']].to_numpy().tolist()
print(time.time() - s0)
def f3():
pdf = pd.DataFrame({"a": [1, 2, 3]*1000000, "b": [4, 5, 6]*1000000, "c": [7, 8, 9]*1000000})
s0 = time.time()
cols = ['a', 'b', 'c']
pdf['combined'] = pdf[cols].apply(lambda row: list(row.values), axis=1)
print(time.time() - s0)
def f4():
pdf = pd.DataFrame({"a": [1, 2, 3]*1000000, "b": [4, 5, 6]*1000000, "c": [7, 8, 9]*1000000})
s0 = time.time()
pdf["combined"] = pdf.apply(pd.Series.tolist,axis=1)
print(time.time() - s0)
if __name__ == '__main__':
eval(f'{sys.argv[1]}()')
➜ python test.py f1
17.766116857528687
➜ python test.py f2
0.7762737274169922
➜ python test.py f3
14.403311252593994
➜ python test.py f4
12.631694078445435
这篇关于如何高效地将多个 pandas 列组合成一个阵列式的列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何高效地将多个 pandas 列组合成一个阵列式的列?


基础教程推荐
猜你喜欢
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01