Python数据透视表

Python数据透视表,python,python-2.7,pivot-table,pandas,Python,Python 2.7,Pivot Table,Pandas,我试图用熊猫做一个频率计数的数据透视表 我有以下代码: from pandas import pivot_table, DataFrame, crosstab import numpy as np df=DataFrame( {'Y':[99999991, 99999992, 99999993, 99999994, 99999995, 99999996, 99999997, 99999998, 99999999], 'X':[1, 2, 3, 4, 5

我试图用熊猫做一个频率计数的数据透视表

我有以下代码:

 from pandas import pivot_table, DataFrame, crosstab
 import numpy as np
 df=DataFrame(
    {'Y':[99999991, 99999992, 99999993, 99999994, 99999995,
          99999996, 99999997, 99999998, 99999999],
     'X':[1, 2, 3, 4, 5, 6, 7, 8, 9],
     'X2':[1, 2, 3, 4, 5, 6, 7, 8, 9]})
 print pivot_table(df,rows=['Y'], cols=['X'],aggfunc=np.sum)
这是我的输出:

 X          1   2   3   4   5   6   7   8   9
 Y                                         
  99999991   1 NaN NaN NaN NaN NaN NaN NaN NaN
  99999992 NaN   2 NaN NaN NaN NaN NaN NaN NaN
  99999993 NaN NaN   3 NaN NaN NaN NaN NaN NaN
  99999994 NaN NaN NaN   4 NaN NaN NaN NaN NaN
  99999995 NaN NaN NaN NaN   5 NaN NaN NaN NaN
  99999996 NaN NaN NaN NaN NaN   6 NaN NaN NaN
  99999997 NaN NaN NaN NaN NaN NaN   7 NaN NaN
  99999998 NaN NaN NaN NaN NaN NaN NaN   8 NaN
  99999999 NaN NaN NaN NaN NaN NaN NaN NaN   9
 X          1   2   3   4   5   6   7   8   9
 X2                                         
   1   99999991 NaN NaN NaN NaN NaN NaN NaN NaN
   2 NaN   99999992 NaN NaN NaN NaN NaN NaN NaN
   3 NaN NaN   99999993 NaN NaN NaN NaN NaN NaN
   4 NaN NaN NaN   99999994 NaN NaN NaN NaN NaN
   5 NaN NaN NaN NaN   99999995 NaN NaN NaN NaN
   6 NaN NaN NaN NaN NaN   99999996 NaN NaN NaN
   7 NaN NaN NaN NaN NaN NaN   99999997 NaN NaN
   8 NaN NaN NaN NaN NaN NaN NaN   99999998 NaN
   9 NaN NaN NaN NaN NaN NaN NaN NaN   99999999
这是我想要的输出:

 X          1   2   3   4   5   6   7   8   9
 Y                                         
  99999991   1 NaN NaN NaN NaN NaN NaN NaN NaN
  99999992 NaN   2 NaN NaN NaN NaN NaN NaN NaN
  99999993 NaN NaN   3 NaN NaN NaN NaN NaN NaN
  99999994 NaN NaN NaN   4 NaN NaN NaN NaN NaN
  99999995 NaN NaN NaN NaN   5 NaN NaN NaN NaN
  99999996 NaN NaN NaN NaN NaN   6 NaN NaN NaN
  99999997 NaN NaN NaN NaN NaN NaN   7 NaN NaN
  99999998 NaN NaN NaN NaN NaN NaN NaN   8 NaN
  99999999 NaN NaN NaN NaN NaN NaN NaN NaN   9
 X          1   2   3   4   5   6   7   8   9
 X2                                         
   1   99999991 NaN NaN NaN NaN NaN NaN NaN NaN
   2 NaN   99999992 NaN NaN NaN NaN NaN NaN NaN
   3 NaN NaN   99999993 NaN NaN NaN NaN NaN NaN
   4 NaN NaN NaN   99999994 NaN NaN NaN NaN NaN
   5 NaN NaN NaN NaN   99999995 NaN NaN NaN NaN
   6 NaN NaN NaN NaN NaN   99999996 NaN NaN NaN
   7 NaN NaN NaN NaN NaN NaN   99999997 NaN NaN
   8 NaN NaN NaN NaN NaN NaN NaN   99999998 NaN
   9 NaN NaN NaN NaN NaN NaN NaN NaN   99999999
这是我一直得到的:

<class 'pandas.core.frame.DataFrame'>
Int64Index: 9 entries, 1 to 9
Data columns:
('Y', 1L)    1  non-null values
('Y', 2L)    1  non-null values
('Y', 3L)    1  non-null values
('Y', 4L)    1  non-null values
('Y', 5L)    1  non-null values
('Y', 6L)    1  non-null values
('Y', 7L)    1  non-null values
('Y', 8L)    1  non-null values
('Y', 9L)    1  non-null values
dtypes: float64(9)

INT64索引:9个条目,1到9
数据列:
('Y',1L)1个非空值
('Y',2L)1个非空值
('Y',3L)1个非空值
('Y',4L)1个非空值
('Y',5L)1个非空值
('Y',6L)1个非空值
('Y',7L)1个非空值
('Y',8L)1个非空值
('Y',9L)1个非空值
数据类型:float64(9)

有人知道为什么吗?产量是否太大。我似乎在上面找不到任何东西。

只需将
行=['Y']
替换为
行=['X2']

>>> print pivot_table(df,rows=['X2'], cols=['X'],aggfunc=np.sum)
      Y                                        
X     1    2    3    4    5    6    7    8    9
X2                                             
1   101  NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN
2   NaN  102  NaN  NaN  NaN  NaN  NaN  NaN  NaN
3   NaN  NaN  103  NaN  NaN  NaN  NaN  NaN  NaN
4   NaN  NaN  NaN  104  NaN  NaN  NaN  NaN  NaN
5   NaN  NaN  NaN  NaN  105  NaN  NaN  NaN  NaN
6   NaN  NaN  NaN  NaN  NaN  106  NaN  NaN  NaN
7   NaN  NaN  NaN  NaN  NaN  NaN  107  NaN  NaN
8   NaN  NaN  NaN  NaN  NaN  NaN  NaN  108  NaN
9   NaN  NaN  NaN  NaN  NaN  NaN  NaN  NaN  109
试试这个:

In [3]: df.pivot_table('Y', rows='X', cols='X2')
X2         1         2         3         4         5         6         7         8         9
X                                                                                           
1   99999991       NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN
2        NaN  99999992       NaN       NaN       NaN       NaN       NaN       NaN       NaN
3        NaN       NaN  99999993       NaN       NaN       NaN       NaN       NaN       NaN
4        NaN       NaN       NaN  99999994       NaN       NaN       NaN       NaN       NaN
5        NaN       NaN       NaN       NaN  99999995       NaN       NaN       NaN       NaN
6        NaN       NaN       NaN       NaN       NaN  99999996       NaN       NaN       NaN
7        NaN       NaN       NaN       NaN       NaN       NaN  99999997       NaN       NaN
8        NaN       NaN       NaN       NaN       NaN       NaN       NaN  99999998       NaN
9        NaN       NaN       NaN       NaN       NaN       NaN       NaN       NaN  99999999
这也将有助于:

pivot_table(df, 'Y', rows='X', cols='X2')


非常感谢。我之所以编辑这个问题,是因为我认为它取决于数字,我无法接收上述格式的数据,你知道为什么吗?输出是预期的行为。您是否阅读了文档的这一部分:?