从(row,col,values)元组列表构造pandas DataFrame [英] Construct pandas DataFrame from list of tuples of (row,col,values)

查看:243
本文介绍了从(row,col,values)元组列表构造pandas DataFrame的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个类似的元组列表

I have a list of tuples like

data = [
('r1', 'c1', avg11, stdev11),
('r1', 'c2', avg12, stdev12),
('r2', 'c1', avg21, stdev21),
('r2', 'c2', avg22, stdev22)
]

,我想将它们放入带有第一列命名的行和第二列命名的列的pandas DataFrame中.看来处理行名的方法类似于pandas.DataFrame([x[1:] for x in data], index = [x[0] for x in data]),但是如何处理列以获得2x2矩阵(前一组的输出是3x4)?是否还有一种更智能的方式来处理行标签,而不是显式地忽略它们?

and I would like to put them into a pandas DataFrame with rows named by the first column and columns named by the 2nd column. It seems the way to take care of the row names is something like pandas.DataFrame([x[1:] for x in data], index = [x[0] for x in data]) but how do I take care of the columns to get a 2x2 matrix (the output from the previous set is 3x4)? Is there a more intelligent way of taking care of row labels as well, instead of explicitly omitting them?

编辑似乎我将需要2个数据框-一个用于平均值,一个用于标准差,对吗?还是可以在每个单元格"中存储值列表?

EDIT It seems I will need 2 DataFrames - one for averages and one for standard deviations, is that correct? Or can I store a list of values in each "cell"?

推荐答案

您可以在创建后旋转DataFrame:

You can pivot your DataFrame after creating:

>>> df = pd.DataFrame(data)
>>> df.pivot(index=0, columns=1, values=2)
# avg DataFrame
1      c1     c2
0               
r1  avg11  avg12
r2  avg21  avg22
>>> df.pivot(index=0, columns=1, values=3)
# stdev DataFrame
1        c1       c2
0                   
r1  stdev11  stdev12
r2  stdev21  stdev22

这篇关于从(row,col,values)元组列表构造pandas DataFrame的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆