[英]Python - Iterating retrieval of values from a column in dataframe
我有以下数据框,其中包含Description
、 Week
、 Count
列。
Description Week count 527 N25846 External EMERGENCY STOP 2015-05-03 77 528 N25846 External EMERGENCY STOP 2015-05-10 983 529 N25846 External EMERGENCY STOP 2015-05-17 245 530 N25846 External EMERGENCY STOP 2015-05-24 897 531 N25846 External EMERGENCY STOP 2015-05-31 2144 532 N25846 External EMERGENCY STOP 2015-06-07 926 533 N25846 External EMERGENCY STOP 2015-06-14 1082 534 N25846 External EMERGENCY STOP 2015-06-21 1935 535 N25846 External EMERGENCY STOP 2015-06-28 1511 536 N25846 External EMERGENCY STOP 2015-07-05 3206 537 N25846 External EMERGENCY STOP 2015-07-12 2031 538 N25846 External EMERGENCY STOP 2015-07-19 590 539 N25846 External EMERGENCY STOP 2015-07-26 1085 540 N25846 External EMERGENCY STOP 2015-08-02 162 541 N25846 External EMERGENCY STOP 2015-08-09 922 542 N25846 External EMERGENCY STOP 2015-08-16 655 543 N25846 External EMERGENCY STOP 2015-08-23 114 544 N25846 External EMERGENCY STOP 2015-08-30 42 1747 P873 ENCLOSURE DOOR CAN BE OPENED 2015-05-03 274 1748 P873 ENCLOSURE DOOR CAN BE OPENED 2015-05-10 1358 1749 P873 ENCLOSURE DOOR CAN BE OPENED 2015-05-17 1047 1750 P873 ENCLOSURE DOOR CAN BE OPENED 2015-05-24 833 1751 P873 ENCLOSURE DOOR CAN BE OPENED 2015-05-31 1277 1752 P873 ENCLOSURE DOOR CAN BE OPENED 2015-06-07 812 1753 P873 ENCLOSURE DOOR CAN BE OPENED 2015-06-14 648 1754 P873 ENCLOSURE DOOR CAN BE OPENED 2015-06-21 666 1755 P873 ENCLOSURE DOOR CAN BE OPENED 2015-06-28 918 1756 P873 ENCLOSURE DOOR CAN BE OPENED 2015-07-05 1614 1757 P873 ENCLOSURE DOOR CAN BE OPENED 2015-07-12 1173 1758 P873 ENCLOSURE DOOR CAN BE OPENED 2015-07-19 772
我想检索每个Description
的最后 5 个计数并继续所有计数并对结果执行一些操作。 换句话说,我想为每个唯一的描述值检索最近 5 Week
的Description
count
。 例如:对于N25846 External EMERGENCY STOP
,我的输出将是 - 42, 114, 655, 922, 162
。 同样,对于P873 ENCLOSURE DOOR CAN BE OPENED
,结果将是 - 772, 1173, 1614, 918, 666
您可以使用数据帧的groupby
和tail
方法:
In [71]: df.groupby('Description').tail(5)
Out[71]:
index Description Week count
13 540 N25846 External EMERGENCY STOP 2015-08-02 162
14 541 N25846 External EMERGENCY STOP 2015-08-09 922
15 542 N25846 External EMERGENCY STOP 2015-08-16 655
16 543 N25846 External EMERGENCY STOP 2015-08-23 114
17 544 N25846 External EMERGENCY STOP 2015-08-30 42
25 1754 P873 ENCLOSURE DOOR CAN BE OPENED 2015-06-21 666
26 1755 P873 ENCLOSURE DOOR CAN BE OPENED 2015-06-28 918
27 1756 P873 ENCLOSURE DOOR CAN BE OPENED 2015-07-05 1614
28 1757 P873 ENCLOSURE DOOR CAN BE OPENED 2015-07-12 1173
29 1758 P873 ENCLOSURE DOOR CAN BE OPENED 2015-07-19 772
将上述分配给变量df
您可以尝试以下操作:
result = df.groupby('Description').apply(func)
其中func
是这样的:
def func(group):
# return the last five entries in the count column
result = group['count'].iloc[-5:]
# if you need the week data, use to_dict() instead of tolist()
return result.tolist()
如果不尝试,我不能完全确定func
的返回值是否可以与apply
一起apply
,因此您可能需要稍微尝试一下。 但这应该给你一个系列,其中索引是描述,值是最后五个计数的列表或字典。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.