引用存储在 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 的特定列的主要内容,如果未能解决你的问题,请参考以下文章