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 是不是是正确的工具?的主要内容,如果未能解决你的问题,请参考以下文章

使用 pandas 合并和附加多个 CSV/数据帧的最快方法

将列表中的索引附加到列表列表以创建 pandas df

Pandas 将浮点数附加到 for 循环中的列

如何在 Pandas 中将数据格式更改为“%Y%m%d”?

在pandas数据框中附加问题的时间序列

Pandas SettingWithCopyWarning [重复]