引用存储在 Python 字典对象中的 pandas DataFrame 的特定列

Posted

技术标签:

【中文标题】引用存储在 Python 字典对象中的 pandas DataFrame 的特定列【英文标题】:Reference specific columns of a pandas DataFrame which is stored inside a Python dictionary object 【发布时间】:2015-04-14 00:47:56 【问题描述】:

我有一个看起来像这样的 Pandas DataFrame 对象的 Python 字典(如果它变得更好,我可以轻松地将其更改为列表...):

 dict = 
 'Thing 1': df
                      Actual      Error
 Date                                                        
 2014-09-15           140.00      140.000000
 2014-09-15           358.03      230.291656
 2014-09-16           373.04      46.367434
 2014-09-17           427.99      87.622059
 2014-09-18           484.87      94.364759

 ...

 'Thing 5': hf
                      Actual      Error
 Date
 2014-09-15           140.00      140.000000
 2014-09-15           358.03      230.291656
 2014-09-16           373.04      46.367434
 

这使我的键:'Thing 1','Thing 2',......'Thing 5'(有时这些可能是非连续的,如下所示:'Hello man','You''re nutty', '再见','3','男人'

我想对字典执行操作,以便返回“实际”列中所有值的新字典/列表。换句话说,我想要:

 dict2 = 
 'Thing 1': df
                      Actual
 Date                                                        
 2014-09-15           140.00
 2014-09-15           358.03
 2014-09-16           373.04
 2014-09-17           427.99
 2014-09-18           484.87

 ...

 'Thing 5': hf
                      Actual
 Date
 2014-09-15           140.00
 2014-09-15           358.03
 2014-09-16           373.04
 

然后我想对生成的字典/列表执行一些操作,例如:groupby(pandas.TimeGrouper..., cumsum() 等。我想不惜一切代价避免“for”循环。我有一个使用“for”循环的解决方案,但它在计算上很昂贵。我尝试了很多解决方法,但不知道从哪里开始。我尝试过的任何方法都没有奏效。我尝试了许多使用项目的变体()、update() 和类似的方法。有什么想法...?没有“for”循环和/或 FAST 执行会很有帮助。

【问题讨论】:

不是 100% 确定您想要什么,但是如何将您的数据帧存储在 pandas 面板中?您可以访问这样的列 panelname['Thing 1']['Actual'] 并执行 panelname['Thing 1'].groupby('Date').count() 之类的操作 正如 Bob 所说,这看起来像 pandas 面板更适合您的数据结构 您能否发布一些生成虚拟数据的代码,以及您当前的代码以进行计时。我认为您可以连接所有数据帧,结果数据帧将具有 MultiIndex。然后你可以在没有for循环的情况下打点计算。 今晚(东部时间)将尝试做。我以前在字典上使用过 concat。 Bob,我不熟悉 pandas 面板,但这看起来就像我过去使用字典的方式。当键是顺序的(或者我强制它们是)时,我可以循环并完全按照您的建议进行操作。但是,我不知道“Thing1”、“Thing2”等名称。对于每个用户,它们确实是按唯一顺序排列的唯一名称。但是,每个字典项在其中都有完全相同的列。我需要能够引用特定的列(在 dict 对象内的每个真实 dict 项中实际上有 6 列)并使用这些列中的数据来获取组等 【参考方案1】:

我找到了两个解决这个问题的方法。

1.) 使用 PYDSE 时,使用自动数据拟合的成本很高。不要这样做。

2.) 使用全新的计算机而不是 10 年以上的旧型号总是有帮助的。尤其是当它是满载的 15 英寸 MacPro 而不是预算购买的 eMachines 时...

由于这两个发现,我从未正式解决过这个问题,但我认为我应该关闭这个问题。

【讨论】:

以上是关于引用存储在 Python 字典对象中的 pandas DataFrame 的特定列的主要内容,如果未能解决你的问题,请参考以下文章

如何将 python 对象(如字典)分配给 pandas 列

如何在该字典中引用 Pandas 数据框中的键?

Pandas:迭代连接存储在数据框字典中的列

如何从 python 中的字典创建 ndjson 对象?

Python_实用入门篇_11

Python入门-3序列:17字典-核心底层原理-内存分析-存储键值对过程