我想在一列中显示值以及它们在单独列中的计数
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来完成,但是想知道我的方法是否错误。基本上,我想计算每人某些类型项目的值,然后将其与列显示中的名称相对。
答案 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