Python 在数据帧中添加数据
我需要一个数据帧,以便将值传递给bokehPython 在数据帧中添加数据,python,pandas,Python,Pandas,我需要一个数据帧,以便将值传递给bokeh df2 = DataFrame(data=mia_classe,columns=['classe','media','deviazione']) for classe in Classe.objects.all(): risposte = Risposta.objects.filter(prova__classe=classe).values_list('score', flat=True) df2.append({'classe':
df2 = DataFrame(data=mia_classe,columns=['classe','media','deviazione'])
for classe in Classe.objects.all():
risposte = Risposta.objects.filter(prova__classe=classe).values_list('score', flat=True)
df2.append({'classe': classe,'media':media(risposte)*10,'deviazione':sigma(risposte)*10}, ignore_index=True)
print df2
此代码不返回错误,但数据帧为空。
在阅读之后,我也尝试过这种方式:
mia_classe = defaultdict(list)
df2 = DataFrame(data=mia_classe,columns=['classe','media','deviazione'])
for classe in Classe.objects.all():
risposte = Risposta.objects.filter(prova__classe=classe).values_list('score', flat=True)
mia_classe = {'classe': classe,'media':media(risposte)*10,'deviazione':deviazione_standard(risposte)*10}
new_df = pandas.DataFrame.from_dict(mia_classe)
df2.append(new_df, ignore_index=True)
print df2
下面是错误:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/allora/testingresso/testingresso/estraicoras.py", line 30, in <module>
new_df = pandas.DataFrame.from_dict(mia_classe)
File "//anaconda/envs/test/lib/python2.7/site-packages/pandas/core/frame.py", line 804, in from_dict
return cls(data, index=index, columns=columns, dtype=dtype)
File "//anaconda/envs/test/lib/python2.7/site-packages/pandas/core/frame.py", line 226, in __init__
mgr = self._init_dict(data, index, columns, dtype=dtype)
File "//anaconda/envs/test/lib/python2.7/site-packages/pandas/core/frame.py", line 363, in _init_dict
dtype=dtype)
File "//anaconda/envs/test/lib/python2.7/site-packages/pandas/core/frame.py", line 5158, in _arrays_to_mgr
index = extract_index(arrays)
File "//anaconda/envs/test/lib/python2.7/site-packages/pandas/core/frame.py", line 5197, in extract_index
raise ValueError('If using all scalar values, you must pass'
ValueError: If using all scalar values, you must pass an index
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/Users/allora/testingresso/testingresso/estaricoras.py”,第30行,在
new_df=pandas.DataFrame.from_dict(mia_classe)
文件“//anaconda/envs/test/lib/python2.7/site packages/pandas/core/frame.py”,第804行,摘自
返回cls(数据,索引=索引,列=列,数据类型=数据类型)
文件“//anaconda/envs/test/lib/python2.7/site packages/pandas/core/frame.py”,第226行,在__
mgr=self.\u init\u dict(数据、索引、列、数据类型=dtype)
文件“//anaconda/envs/test/lib/python2.7/site packages/pandas/core/frame.py”,第363行,初始目录
dtype=dtype)
文件“//anaconda/envs/test/lib/python2.7/site packages/pandas/core/frame.py”,第5158行,在_-arrays_-to_-mgr中
索引=提取索引(数组)
文件“//anaconda/envs/test/lib/python2.7/site packages/pandas/core/frame.py”,第5197行,摘录索引
raise VALUERROR('如果使用所有标量值,则必须通过'
ValueError:如果使用所有标量值,则必须传递索引
有什么建议吗?尝试添加
orient='index'
:
new_df = pandas.DataFrame.from_dict(mia_classe, orient='index')
用一个即兴的例子:
mia_classe = {'classe': 'classe','media': 100,'deviazione': 150}
new_df = pd.DataFrame.from_dict(mia_classe, orient='index')
0
classe classe
deviazione 150
media 100
问题在于append方法。我误解了pandas引用。 下面是我如何(在同事的帮助下)解决的: 因此,基本上我可以改变观点来解决这个问题:将每个类的名称、平均值和标准差追加到每个类中,将每个名称追加到其他名称中,将每个avg追加到其他avg中,等等 结果听起来是这样的:
deviazione media nome
0 3.841544 7.614035 1A - piazzi lena perpenti
1 4.457753 6.807576 1A - otto marzo
2 4.001645 7.602469 1F - g. ferraris
3 4.133874 7.241026 1M - g. ferraris
4 4.494765 7.149123 1BS - piazzi lena perpenti
您可以添加吗?谢谢!很遗憾,我们需要精确的列顺序。问题在于appending方法。您发布的错误源于
.from\u dict()
部分,而不是.append()
方法。
deviazione media nome
0 3.841544 7.614035 1A - piazzi lena perpenti
1 4.457753 6.807576 1A - otto marzo
2 4.001645 7.602469 1F - g. ferraris
3 4.133874 7.241026 1M - g. ferraris
4 4.494765 7.149123 1BS - piazzi lena perpenti