【问题标题】:How to count rows based on the variable position in a column in python如何根据python中列中的变量位置计算行数
【发布时间】:2018-01-29 11:47:26
【问题描述】:

我有一个看起来像这样的数据框:(处理有多种可能的字符变量,我只是为这个问题简化了)

ID              Position            Treatment
--20AxECvv-         0           A
--20AxECvv-         -1          A
--20AxECvv-         -2          A
--h9INKewQf-        0           A
--h9INKewQf-        -1          B
--h9INKewQf-        -2          B
--h9INKewQf-        -3          B
--h9INKewQf-        -4          B
--h9INKewQf-        -5          B
--h9INKewQf-        -6          B
--h9INKewQf-        -7          B
zZU7a@8jN           0           B
QUeSNEXmdB          0           C
QUeSNEXmdB          -1          C
qu72Ql@h79          0           C

我只想用 Python 保留对每个 ID 的最小位置的处理。

结果是:

 ID              Position            Treatment
--20AxECvv-         -2          A
--h9INKewQf-        -7          B
zZU7a@8jN           0           B
QUeSNEXmdB          -1          C
qu72Ql@h79          0           C

我是初学者,我想我必须使用 groupby 并按最小位置过滤,但我知道如何编写它。在此先感谢:)

【问题讨论】:

    标签: python pandas loops dataframe minimum


    【解决方案1】:

    您还可以使用df.sort_values 对数据框进行排序,并使用df.drop_duplicates 删除重复项:

    In [795]: df.sort_values('Position').drop_duplicates('ID')
    Out[795]: 
                  ID  Position Treatment
    10  --h9INKewQf-        -7         B
    2    --20AxECvv-        -2         A
    13    QUeSNEXmdB        -1         C
    11     zZU7a@8jN         0         B
    14    qu72Ql@h79         0         C
    

    【讨论】:

    • 通过这样做,我有一些 ID 与不同处理的最后一个位置重复。
    • @AnnaCarrere 好的,顺序不同,但正是您想要的行。
    • 将它应用到整个数据帧时仍然有同样的问题,我不明白为什么
    • @AnnaCarrere 你确定吗?您正在运行第二个解决方案,对吗?我删除了第一个。
    • 我只是放了一个简化的数据框。我只想要基于第一个位置(即最小的位置)进行相应处理的ID列表(每个唯一值)
    【解决方案2】:

    使用 groupby 和 min

    df.groupby('ID').min()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-10
      • 2017-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多