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

时间:2019-07-27 17:07:34

标签: 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    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来完成,但是想知道我的方法是否错误。基本上,我想计算每人某些类型项目的值,然后将其与列显示中的名称相对。

2 个答案:

答案 0 :(得分:3)

df_fridge_grp.unstack()

工作吗?

答案 1 :(得分:1)

代码:

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