【问题标题】:Python - Iterating retrieval of values from a column in dataframePython - 迭代从数据框中的列中检索值
【发布时间】:2015-11-26 13:12:48
【问题描述】:

我有以下数据框,其中包含 DescriptionWeekCount 列。

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 个 WeekcountDescription。例如:对于N25846 External EMERGENCY STOP,我的输出将是-42, 114, 655, 922, 162。同样,对于P873 ENCLOSURE DOOR CAN BE OPENED,结果将是 - 772, 1173, 1614, 918, 666

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您可以使用数据帧的groupbytail 方法:

    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
    

    【讨论】:

      【解决方案2】:

      将上述分配给变量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 一起使用,因此您可能需要稍微尝试一下。但这应该会给你一个系列,索引是描述,值是最后五个计数的列表或字典。

      【讨论】:

        猜你喜欢
        • 2023-01-14
        • 2021-09-17
        • 2021-11-23
        • 2020-07-30
        • 2018-09-30
        • 1970-01-01
        • 2012-03-06
        • 2018-01-01
        • 2020-01-14
        相关资源
        最近更新 更多