目前,我有一个数据帧,有点像这样的结构
InvoiceNo Month Year Size
1 1 2014 7
2 1 2014 8
3 2 2014 11
4 3 2015 9
5 7 2015 8.5
等等。。。你知道吗
我正在尝试创建一个函数,该函数将按年份对数据帧进行分段,并按大小和月份进行分组,然后计算InvoiceNo,最后取消该数据帧的堆栈。你知道吗
我一直在做的事情是这样的:
x = 2014
def Year_calc(df):
return df[df['Year'] == x].groupby(['Size','Month']).agg({'InvoiceNo': 'count'}).unstack(0).columns.droplevel(0).fillna(0)
然后df2014=年度计算(df)
但它返回以下输出:
Float64Index([], dtype='float64', name='Size')
有人能指出我做错了什么吗?你知道吗
使用
groupby
、count
和unstack
:或者,等同于
pivot_table
:比较如下:
或者,只需计算所需年份:
df.apply
将行或列作为Series对象传递-取决于指定的轴。它不会传递整个数据帧。你知道吗如果要将函数应用于整个数据帧,那么
df2014 = Year_calc(df)
如何?你知道吗您还应该考虑将年份作为参数传递给函数-这样就可以清楚地知道year\u calc函数在做什么。你知道吗
以下是输入数据:
解决方案1:
使用前面的答案和您给出的元素,下面是我设法编写的函数:
以下是2014年的返回表:
解决方案2 由于删除了“年”作为参数,因此似乎最好进行一些调整,您可以在执行“分组依据”之前按年选择行,也可以按年、月、大小分组,然后选择与所需年份对应的行。你知道吗
未滤波输出为:
假设您需要2015年的数据,然后键入:
结果返回:
请检查本文中的多索引切片:here
希望这有帮助!你知道吗
相关问题 更多 >
编程相关推荐