Python 数据帧值_counts()形状错误

Python 数据帧值_counts()形状错误,python,pandas,group-by,shape,Python,Pandas,Group By,Shape,我试图通过一个时间序列数据集,计算每种独特类别的服装每天出现的次数。除了2012年,我的数据集每年都运行良好。当我运行我的代码时,我收到一个形状广播错误,我无法理解为什么2012年会导致这个错误,但我的其他年份都不会 test=订单['Category']['2012'] counts=test.groupby(pd.Grouper(freq='D')).value\u counts() 下面是代码产生的错误 ValueError

我试图通过一个时间序列数据集,计算每种独特类别的服装每天出现的次数。除了2012年,我的数据集每年都运行良好。当我运行我的代码时,我收到一个形状广播错误,我无法理解为什么2012年会导致这个错误,但我的其他年份都不会


test=订单['Category']['2012']
counts=test.groupby(pd.Grouper(freq='D')).value\u counts()
下面是代码产生的错误

ValueError                                Traceback (most recent call last)
<ipython-input-127-bc2dbf569e47> in <module>()
      1 test=orders['Category']['2012']
----> 2 counts = test.groupby(pd.Grouper(freq='D')).value_counts()

c:\users\matthew mclaughlin\miniconda3\envs\cseclass\lib\site-packages\pandas\core\groupby.py in value_counts(self, normalize, sort, ascending, bins, dropna)
   3015 
   3016         # multi-index components
-> 3017         labels = list(map(rep, self.grouper.recons_labels)) + [lab[inc]]
   3018         levels = [ping.group_index for ping in self.grouper.groupings] + [lev]
   3019         names = self.grouper.names + [self.name]

c:\users\matthew mclaughlin\miniconda3\envs\cseclass\lib\site-packages\numpy\core\fromnumeric.py in repeat(a, repeats, axis)
    394     except AttributeError:
    395         return _wrapit(a, 'repeat', repeats, axis)
--> 396     return repeat(repeats, axis)
    397 
    398 

ValueError: operands could not be broadcast together with shape (366,) (363,)
2013-01-01外套

代码运行后应该产生的结果如下所示

Order Date  Category           
2013-01-01  Outerwear              289
            First Layer Tops       230
            Accessories            190
            First Layer Bottoms    155
            Footwear                10
            Kid's Sets               3

最后,我取消此结果的堆栈,并将其插入每个类别的新列中。

Groupby对象没有名为
.value\u counts()的属性。
。如果要计算数值,请使用
应用
+
堆栈

df.groupby(pd.Grouper(freq='D')).apply(lambda x : x.Category.value_counts()).stack()
带有附加日期的测试数据的输出

Order Date Category 2013-01-01 Outerwear 3 First Layer Tops 2 Accessories 2 Kid's Sets 1 First Layer Bottoms 1 2013-01-02 Outerwear 3 First Layer Tops 2 Accessories 2 Kid's Sets 1 First Layer Bottoms 1 dtype: int64 订单日期类别 2013-01-01外套3 第一层顶部2 附件2 童装1 第一层底部1 2013-01-02外套3 第一层顶部2 附件2 童装1 第一层底部1 数据类型:int64
如果您试图根据年份选择类别,请尝试布尔索引,如
df[df.index.year==2012]
Groupby对象没有名为
.value\u counts()的属性。如果要计算数值,请使用
应用
+
堆栈

df.groupby(pd.Grouper(freq='D')).apply(lambda x : x.Category.value_counts()).stack()
df['Date'] = pd.to_datetime(df['Date'])   
df.set_index('Date',inplace=True)    
df.groupby([pd.Grouper(freq='D'),'Category']).size()
带有附加日期的测试数据的输出

Order Date Category 2013-01-01 Outerwear 3 First Layer Tops 2 Accessories 2 Kid's Sets 1 First Layer Bottoms 1 2013-01-02 Outerwear 3 First Layer Tops 2 Accessories 2 Kid's Sets 1 First Layer Bottoms 1 dtype: int64 订单日期类别 2013-01-01外套3 第一层顶部2 附件2 童装1 第一层底部1 2013-01-02外套3 第一层顶部2 附件2 童装1 第一层底部1 数据类型:int64 如果您试图根据年份选择类别,请尝试布尔索引,如
df[df.index.year==2012]

df['Date'] = pd.to_datetime(df['Date'])   
df.set_index('Date',inplace=True)    
df.groupby([pd.Grouper(freq='D'),'Category']).size()
如果要针对特定年份进行测试,请按照以下方式选择您要查找的年份所在的行:

test = df[df['Date'].dt.year == 2013]
test.set_index('Date',inplace=True)    
test.groupby([pd.Grouper(freq='D'),'Category']).size()
您还可以使用透视表:

pd.pivot_table(df, index=['Date','Category'], aggfunc=np.size)
如果要针对特定年份进行测试,请按照以下方式选择您要查找的年份所在的行:

test = df[df['Date'].dt.year == 2013]
test.set_index('Date',inplace=True)    
test.groupby([pd.Grouper(freq='D'),'Category']).size()
您还可以使用透视表:

pd.pivot_table(df, index=['Date','Category'], aggfunc=np.size)

test=orders['Category']['2012']
将为您提供一行。你为什么这么做?@cᴏʟᴅsᴘᴇᴇᴅ 可能正在尝试获取2012年的类别是的,orders['Category']['2012']为我获取2012年的所有类别行。我按时编制了索引。
test=orders['Category']['2012']
将为您生成一行。你为什么这么做?@cᴏʟᴅsᴘᴇᴇᴅ 可能正在尝试获取2012年的类别是的,orders['Category']['2012']为我获取2012年的所有类别行。我已按时编制索引。您确定这将提供预期的输出吗<代码>订单日期
是一个列名而不是两个不同的列名吗?当然,您可以在示例中绘制示例列名和列名之间的连接。类别如何?尝试将输出放在示例数据上。您确定这将提供预期的输出吗<代码>订单日期是一个列名而不是两个不同的列名吗?当然,您可以在示例中绘制示例列名和列名之间的连接。类别如何?试着将输出放在示例数据上。groupby对象仍然使用.value_counts(),只是澄清一下,每隔一年。我得到了那一年中每天的叠加数据。只有2012年没有这样做。然而,你的建议确实奏效了。还是不知道为什么,但谢谢你。我猜这与apply函数有关。嗯,我下次再使用我的原始代码。另外,我必须删除你的.stack(),因为代码已经用value_counts()进行了堆叠。我应用了.unstack()来集成到我的其他dataframegroupby对象中,但仍然可以使用.value_counts(),只是为了澄清一下,每隔一年。我得到了那一年中每天的叠加数据。只有2012年没有这样做。然而,你的建议确实奏效了。还是不知道为什么,但谢谢你。我猜这与apply函数有关。嗯,我下次再使用我的原始代码。另外,我必须删除你的.stack(),因为代码已经用value_counts()进行了堆叠。我应用了.unstack()来集成到另一个数据帧中