我在csv文件中有这样的数据

Symbol  Action  Year
  AAPL     Buy  2001
  AAPL     Buy  2001
   BAC    Sell  2002
   BAC    Sell  2002

我可以像这样阅读和分组
df.groupby(['Symbol','Year']).count()

我懂了
             Action
Symbol Year
AAPL   2001       2
BAC    2002       2

我希望这个(顺序无所谓)
             Action
Symbol Year
AAPL   2001       2
AAPL   2002       0
BAC    2001       0
BAC    2002       2

我想知道是否有可能算零次

最佳答案

您可以将 pivot_table unstack 结合使用:

print df.pivot_table(index='Symbol',
                     columns='Year',
                     values='Action',
                     fill_value=0,
                     aggfunc='count').unstack()

Year  Symbol
2001  AAPL      2
      BAC       0
2002  AAPL      0
      BAC       2
dtype: int64

如果您需要输出为DataFrame,请使用 to_frame :
print df.pivot_table(index='Symbol',
                     columns='Year',
                     values='Action',
                     fill_value=0,
                     aggfunc='count').unstack()
                                     .to_frame()
                                     .rename(columns={0:'Action'})

             Action
Year Symbol
2001 AAPL         2
     BAC          0
2002 AAPL         0
     BAC          2

关于python - Pandas groupby为零值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37003100/

10-08 22:40