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-给出了完整的解决方案。谢谢你们两位!