根据Python的第一行拆分

根据Python的第一行拆分

我有一张熊猫桌:

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的所有数据?
例如,在一个图中每个Data的每个Year的直方图?
它应该是带有枢轴工作台的东西吗?

最佳答案

您可以尝试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,然后通过DataFrame将布尔值int转换为astype

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

关于python - 根据Python的第一行拆分 Pandas 表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36571460/

10-12 21:13