我在 python 中有一个字典列表,其中包含浮点数和 np 数组的值。我想将它保存在熊猫数据框中,以便我可以为给定的一组参数绘制 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 的索引。有没有一种有效的方法来做到这一点?
1 回答
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
dataframe
您创建的结果如下所示:
当您要求: 时x, y = dfplot['xarr'], dfplot['yarr']
,您要求的是列xarr
&的内容,yarr
它们都包含列表。因此,对于他们中的每一个,您都会得到一系列列表。
亲眼看看: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)
添加回答
举报
0/150
提交
取消