【发布时间】:2021-10-21 11:45:48
【问题描述】:
我正在处理长度为 1,000-10,000 个元素的数组,它们都具有相同的长度。
我需要返回一个数组(在下面的示例代码中称为“点”),它在数组的每个元素中都包含一个字典。
我一直在寻找与 .loc 方法类似的方法,可用于为 pandas 数据框中的列创建规则,但仍未找到不涉及迭代附加数组的解决方案 I需要退货。
非常感谢您的解决方案!
当前代码:
times = [000000001,000034000,...]
highs = [2,1,...]
lows = [-2,-3,...]
points = []
for i in range(0, len(times)):
points.append({"time": times[i], "low": lows[i], "high": highs[i]})
评论建议的解决方案:
import pandas as pd
df = pd.DataFrame({"time": times,"low":lows,"high":highs})
看起来像:
Time High Low
0 100000001 1 -1
1 100000002 3 -4
2 100000003 4 -5
已经咨询过的 SE 帖子:
Iteratively appending ndarray arrays using numpy in Python
【问题讨论】:
-
将这 3 个数组转换为一个数据框,其中每个点都是一行对您不起作用?
-
同意,听起来你需要一个 pandas DataFrame。
-
@JuanC 我已经将它们放在一个数据框中(添加到帖子中),但我一直坚持如何在不迭代的情况下“逐行”将字典放在一起
-
@jros 你能解释一下为什么你想要每行都有一个字典吗?这是一个非常低效的表示。使用 pandas 和 numpy,您可以通过保留少量数组而不是大量纯 Python 对象来解决 Python 的缓慢问题。库使低效的东西不方便输入是很常见的(也是好的)。如果你真的需要那个表示,那么你只需要编写一个循环。想要它可能有充分的理由,但最好先检查它是否真的需要。
-
@MrFoozm 字典格式只是因为它需要以json格式输出
标签: python arrays dictionary