我有一个如下所示的数据帧,只有2categories A and B
。每行中的每个名称都可以与它们中的任何一个相关联。当名称再次出现时,我需要另外两列来指示该名称在该名称的最后5个事务中的category A
和category B
计数。如果在此之前有少于5个事务,那么输出应该是"-1"
。因此,我通过对名称排序,然后对到期日期排序,将数据框聚集在名称上,但不确定如何进一步处理。你知道吗
Document Number Date Due Name Category
21175370 9/20/17 Max A
20762835 8/20/17 Max A
21134931 8/25/17 Emily B
20784776 8/19/17 John A
20874477 8/4/17 Doe B
20874568 8/4/17 Doe B
20874575 8/4/17 Doe B
19784032 5/9/17 Doe B
19980723 5/25/17 Doe B
20833755 9/16/17 Doe A
输出如下所示:
Document Number Date Due Name Category Category_A_Count Category_B_Count
21175370 9/20/17 Max A -1 -1
20762835 8/20/17 Max A -1 -1
21134931 8/25/17 Emily B -1 -1
20784776 8/19/17 Doe A -1 -1
20874477 8/4/17 Doe B -1 -1
20874568 8/4/17 Doe B -1 -1
20874575 8/4/17 Doe B -1 -1
19784032 5/9/17 Doe B -1 -1
19980723 5/25/17 Doe B 1 4
20833755 9/16/17 Doe A 0 5
我尝试了一些方法,将pandas数据框改为list,这样就可以了,但是如何在pandas中实现呢?地址:
vendorList = list(vendorLast5["Name"])
cat = list(vendorLast5["Category"])
print type(vendorList)
catA = [-1, -1, -1, -1]
catB = [-1, -1, -1, -1]
for i in range(0, len(vendorList)):
if(i > 4):
countA = 0
countB = 0
for j in range(i-5, i):
if(vendorList[j] != vendorList[i]):
countA = -1
countB = -1
break
if(cat[j] == "A"):
countA = countA+1
else:
countB=countB+1
catA.append(countA)
catB.append(countB)
目前没有回答
相关问题 更多 >
编程相关推荐