Python 如何将列的值显示为单独的列

Python 如何将列的值显示为单独的列,python,dataframe,rows,transpose,Python,Dataframe,Rows,Transpose,我想在一列中显示值,并在单独的列中显示它们的计数 Dataframe is Date Name SoldItem 15-Jul Joe TV 15-Jul Joe Fridge 15-Jul Joe Washing Machine 15-Jul Joe TV 15-Jul Joe Fridge 15-Jul Mary Chair 15-Jul Mary Fridge 16-Jul J

我想在一列中显示值,并在单独的列中显示它们的计数

Dataframe is
Date     Name    SoldItem
15-Jul    Joe     TV
15-Jul    Joe     Fridge
15-Jul    Joe     Washing Machine
15-Jul    Joe     TV
15-Jul    Joe     Fridge
15-Jul    Mary    Chair
15-Jul    Mary    Fridge
16-Jul    Joe     Fridge
16-Jul    Joe     Fridge
16-Jul    Tim     Washing Machine
17-Jul    Joe     Washing Machine
17-Jul    Jimmy   Washing Machine
17-Jul    Joe     Washing Machine
17-Jul    Joe     Washing Machine
我得到的输出是

Date      Name   Count
15-Jul     Joe       2
          Mary       1
16-Jul     Joe       2

我希望最终的输出是

Date    Joe    Mary 
15-Jul   2        1
16-Jul   2        

下面是代码

   fields = ['Date', 'Name', 'SoldItem']
   df = pd.read_csv('data.csv', skipinitialspace=True, usecols=fields)
   df_fridge = df.loc[(df['SoldItem'] == 'Fridge')]
   df_fridge_grp = df_fridge.groupby(["Date", "Name"]).size()
   print df_fridge_grp
如果有人能提出一些建议。我猜这可以通过loc、iloc实现,但我想知道我的方法是否错误。基本上,我想计算每个人的特定类型项目的值,然后在列显示中显示与名称相对应的值。

df_fridge_grp.unstack()
工作?

代码:

df_new = df[df['SoldItem'] == 'Fridge'].groupby(['Date', 'Name']).count()
df_new = df_new.unstack().fillna(0).astype(int)
print(df_new)
       SoldItem     
Name        Joe Mary
Date                
15-Jul        2    1
16-Jul        2    0
输出:

df_new = df[df['SoldItem'] == 'Fridge'].groupby(['Date', 'Name']).count()
df_new = df_new.unstack().fillna(0).astype(int)
print(df_new)
       SoldItem     
Name        Joe Mary
Date                
15-Jul        2    1
16-Jul        2    0

谢谢!它完成了任务,但它有一个十进制值,有没有办法去掉它?例如,值是2.0、1.0而不是2和1,这是因为是空值,所以数据类型是
float
。您可以
.fillna(0).astype(int)
进行修复that@brentertainer-给出了完整的解决方案。谢谢你们两位!