pandas df 在多线程中附加更改变量:为 df 创建初始索引时出现问题,pd 是不是是正确的工具?
Posted
技术标签:
【中文标题】pandas df 在多线程中附加更改变量:为 df 创建初始索引时出现问题,pd 是不是是正确的工具?【英文标题】:pandas df appending altering variables in multithreading: problems creating the initial index for the df, and is pd the correct tool for this?pandas df 在多线程中附加更改变量:为 df 创建初始索引时出现问题,pd 是否是正确的工具? 【发布时间】:2022-01-10 07:49:33 【问题描述】:我需要:
-
创建一个如下所示的 df:
items | y | y | y |
---|---|---|---|
item | z | z | z |
item | z | z | z |
item | z | z | z |
为方便起见,第一列被命名为 ['items'],因为在此自定义索引下创建的行将根据变量 item 的变化来实现。它将被传递到 items 列以创建新列,该变量的值稍后将用作特定行的选择器。变量 y 和 z 也会不断变化,并附加到 df..
z 值可能是 NaN,比如说 y 到 y50 左右的范围,比方说只有从 y50 到 y5000 的值。
出于这个原因 - 如果这甚至是适合这项工作的工具,请告诉我!我读到有时如果数据结构不均匀,可能会导致问题 - 为什么会这样? 这严格来说是我试图完成的一种“三角形”数据结构,我选择 pd 是因为以后对获得的数据进行分析很容易(而且因为我喜欢它)。但最重要的是:如果这在 pd 中是可行的,那么这个数据结构将满足我稍后将对数据执行的所有操作。
问题:
如何确保 item 变量的第 500 个值恰好附加在名为 'items' 的初始索引列下,从而创建第 500 行的“index”值 item?它还必须用数值 0 或 NaN 填充,直到它具有值的点,比如说在以 y 的连续更改命名的第 501 列中?将 y 列视为 TIME(我知道,通常人们会将其映射到 y 轴上)我觉得这很容易,但我需要帮助,因为如果从一开始就没有正确设置,整个项目可能会失败。
所以,自然:
如何为这个任务正确地创建它,以使附加工作无缝?基本上,第一个主线程获取数据,检查它是否符合某些标准,然后才传递到数据帧无限循环,该循环不断扫描数据以查找数据中的任何异常。 想让这个 df 成为这个项目的中心点,如果这是一个好主意,IDK,请赐教。
编辑:取得了一些进展
到目前为止我做了什么:
df_buffer = pd.DataFrame('items':[f'item'])
df_buffer = df_buffer.insert( loc=1, column=[f'y'], value=int)
TypeError: unhashable type: 'list'
(...)column=f'y'(...)
输出为None
感谢帮助。
【问题讨论】:
【参考方案1】:数据帧不适合多线程操作。我建议为此使用 Python 的内置数据结构。您可能可以使用字典字典并对此字典执行操作/更新。然后,出于分析目的,使用字典创建数据框。
df_dict =
"item_1": "x": x_value, "y": y_value, "z": z_value,
"item_2": "x": x_value, "y": y_value, "z": z_value
这个answer 解释了如何使用字典来制作数据框。
【讨论】:
以上是关于pandas df 在多线程中附加更改变量:为 df 创建初始索引时出现问题,pd 是不是是正确的工具?的主要内容,如果未能解决你的问题,请参考以下文章