如何使用列中的np数组条目创建panda / pickle数据集,以便我可以有效地绘制它们?

问题描述 投票:0回答:1

我在python中有一个字典列表,其中包含float和np数组的值。我想将它保存在pandas数据帧中,以便我可以为给定的参数集绘制xarr,yarr。

dic1 = {'p1':1, 'p2': 34, 'xarr' : np.array([1,2,3]) , 'yarr': np.array([4,4,6])}
dic2 = {'p1':2, 'p2': 45 ,'xarr' : np.array([1,2,3]) , 'yarr': np.array([6,6,4])}
listdic = [dic1, dic2]
df = pd.DataFrame(listdic)
dfplot= df[df['p1'] > 1]
x, y = dfplot['xarr'], dfplot['yarr']
plt.plot(x, y)

但是我得到了这个错误

ValueError: setting an array element with a sequence.

因为我也得到了熊猫df的索引。有没有一种有效的方法呢?

python pandas plot dataset
1个回答
0
投票

你创建的dataframe看起来像这样:

enter image description here

当你要求:x, y = dfplot['xarr'], dfplot['yarr']时,你要求xarryarr列的内容都包含列表。因此,对于他们每个人,你得到一个series列表。

你自己看: type(x)将导致:

pandas.core.series.Series

您可以使用iloc访问系列内容:

idx = 0
x = x_series.iloc[idx]

在您的示例中,您只有1条记录,因此您只需使用:

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
dic1 = {'p1':1, 'p2': 34, 'xarr' : np.array([1,2,3]) , 'yarr': np.array([4,4,6])}
dic2 = {'p1':2, 'p2': 45 ,'xarr' : np.array([1,2,3]) , 'yarr': np.array([6,6,4])}
listdic = [dic1, dic2]
df = pd.DataFrame(listdic)
dfplot= df[df['p1'] > 1]
x_series, y_series = dfplot['xarr'], dfplot['yarr']
x,y = x_series.iloc[0], y_series.iloc[0]
plt.plot(x, y)
© www.soinside.com 2019 - 2024. All rights reserved.