这是here的后续问题,我有一个pandas.Panel
,其中有几个项目由pandas.DataFrames
组成。我想在我的DataFrame
(在Panel
中的短轴)中只在一个命令中绘制一个特定的列,避免像
plt.plot(x, DataFrame1[y1])
plt.plot(x, DataFrame2[y1])
...
作为一个答案,我可以在Panel
中切换坐标轴,这样就不是一个包含一个数据集(具有某个起始参数的模拟)的所有信息的项目,而是所有不同模拟的一个信息(例如yvaluey1
),而是将其他参数存储在其他项目中(DataFrames
)。在
即使我的代码是模拟钟摆的行为,我还是将它分解成一个通用的模拟代码,返回值y1-y3
,而不是实际的物理参数。此模拟将针对2个不同的启动参数k
进行。在
import pandas as pd
data = pd.Panel(major_axis=[], minor_axis=['x', 'sim1', 'sim2'])
# some kind of simulation resulting in 3 simulated values and with a
# starting parameter for different simulation "strengths"
# not sure whether to use a list or dict here
ks = {'sim1' = 0.5, 'sim2' = 1.0}
for k in ks:
x, y1, y2, y3 = 0, 0, 0, 0
while x<100:
x += 1
y1 += 1*ks[k]*x
y2 += 2*ks[k]*x
y3 += 3*ks[k]*x
...
# for example the y2 value for the different k values should be plottable like this
data['y2'].plot()
我现在的问题是如何优雅地(尽可能少的代码行)将每个模拟的每个值添加/附加到data
,考虑到每个模拟步骤可能有5个或更多个模拟,每个模拟步骤有10个或更多个值?在
例如,在我的问题mentioned before中,我将创建一个新的DataFrame
,并将其附加到给定模拟的现有数据集中,类似于data.append(pd.DataFrame([[x, y1, y2, y3]], columns=['x', 'y1', 'y2', 'y3']))
。但是从那里我不能用一个命令正确地绘制,而是必须手动为每个模拟添加一个新的图形。在
如果有人能帮助我理解如何构建这样一个Panel
这样的“运行中”——从我之前的问题中我已经知道如何绘制一个:)
下面展示了模拟是如何工作的,以及例如y1项目最终应该是什么样子
In [2]: ks = {'sim1' : 0.5, 'sim2' : 1.0}
Out[2]: {'sim1': 0.5, 'sim2': 1.0}
In [3]:
for k in ks:
x, y1, y2 = 0, 0, 0
while x<3:
x += 1
y1 += 1*ks[k]*x
y2 += 2*ks[k]*x
# HERE is missing what I'm looking for
# it should append e.g. the y1 value to data['y1'] for both k
Out[3]: ...
In [4]: print(data['y1'])
Out[4]:
x sim1 sim2
0 1 0.5 1.0
1 2 1.5 3.0
2 3 3.0 6.0
我希望通过这件事,我现在更清楚我在寻找什么-如果不告诉我的话
我认为建立一个熊猫。面板将建立一个如下形式的词典:
现在您可以轻松构建面板:
^{pr2}$您可以在Pandas Cookbook中找到一些有用的示例
更新:以下是熊猫食谱中稍作修改的示例:
现在我们可以添加
df3
,如下所示:相关问题 更多 >
编程相关推荐