基于Python中的第一行拆分pandas表

时间:2016-04-12 11:06:39

标签: python pandas plot

我有一张熊猫桌:

Data   Years  Y
A      2001   3
A      2007   5
A      2002   8
A      2009   1
B      2001   8
В      2004   5
С      2004   4
С      2006   6
С      2005   9

如何分别分析A,B和C的所有数据? 例如,一个图中每DataYear的直方图? 它应该是带有数据透视表的东西吗?

1 个答案:

答案 0 :(得分:3)

您可以尝试pivot

print df
  Data  Years  Y
0    A   2001  3
1    A   2007  5
2    A   2002  8
3    A   2009  1
4    B   2001  8
5    B   2004  5
6    C   2004  4
7    C   2006  6
8    C   2005  9

df1 = df.pivot(index='Data', columns='Years', values='Y')
print df1
Years  2001  2002  2004  2005  2006  2007  2009
Data                                           
A       3.0   8.0   NaN   NaN   NaN   5.0   1.0
B       8.0   NaN   5.0   NaN   NaN   NaN   NaN
C       NaN   NaN   4.0   9.0   6.0   NaN   NaN

如果您不需要计算NaN值,请使用notnull,然后按astype将布尔DataFrame转换为int

print df1.notnull().astype(int)
Years  2001  2002  2004  2005  2006  2007  2009
Data                                           
A         1     1     0     0     0     1     1
B         1     0     1     0     0     0     0
C         0     0     1     1     1     0     0

如果您在Years列中有重复数据,则可以将pivot_tableaggfunc一起使用,例如sum。我在行23

中有重复项
print df
  Data  Years   Y
0    A   2001   3
1    A   2007   5
2    A   2002   8
3    A   2002  10
4    A   2009   1
5    B   2001   8
6    B   2004   5
7    C   2004   4
8    C   2006   6
9    C   2005   9

print df.pivot_table(index='Data', columns='Years', values='Y', aggfunc=sum)
Years  2001  2002  2004  2005  2006  2007  2009
Data                                           
A       3.0  18.0   NaN   NaN   NaN   5.0   1.0
B       8.0   NaN   5.0   NaN   NaN   NaN   NaN
C       NaN   NaN   4.0   9.0   6.0   NaN   NaN