【问题标题】:Data Frame operation in pythonpython中的数据框操作
【发布时间】:2018-02-02 01:33:40
【问题描述】:

我有下面给出的输入数据框。对于ID 的每个第一个唯一元素行,它必须在输出数据帧Zeros_For_UniqueID 列中写入零。之后,应从Count 变量中计算出连续的零,然后再为唯一的ID 出现整数,并且必须将其放入输出列Zeros_For_UniqueID

输入数据帧:

ID  Count
1234    1
1234    2
1234    0
1234    0
1234    0
1234    1
1234    1
5678    1
5678    5
5678    4
5678    0
1111    0
1111    0
1111    1
1111    2
1111    0
1111    0
1111    2

输出数据帧

ID  Count   Zeros_For_UniqueID
1234    1   0
1234    2   0
1234    0   0
1234    0   1
1234    0   2
1234    1   3
1234    1   0
5678    1   0
5678    5   0
5678    4   0
5678    0   0
1111    0   0
1111    0   1
1111    1   2
1111    2   0
1111    0   0
1111    0   1
1111    2   2

谁能帮我解决这个问题。我是 python 新手,并试图解决这个问题以供我进一步研究。谢谢!

【问题讨论】:

    标签: python pandas numpy dataframe logic


    【解决方案1】:

    我不确定速度,但这会达到你所需要的,你需要groupby+cumsum+shift

    df['New']=df.groupby('ID').\
         apply(lambda x : x.groupby(x.Count.ne(0).cumsum().shift().fillna(False)).cumcount()).\
           sort_index(level=1).values
    df
    Out[323]: 
          ID  Count  New
    0   1234      1    0
    1   1234      2    0
    2   1234      0    0
    3   1234      0    1
    4   1234      0    2
    5   1234      1    3
    6   1234      1    0
    7   5678      1    0
    8   5678      5    0
    9   5678      4    0
    10  5678      0    0
    11  1111      0    0
    12  1111      0    1
    13  1111      1    2
    14  1111      2    0
    15  1111      0    0
    16  1111      0    1
    17  1111      2    2
    

    【讨论】:

      猜你喜欢
      • 2020-12-07
      • 1970-01-01
      • 2019-01-05
      • 1970-01-01
      • 2021-12-22
      • 2018-06-21
      • 2021-03-09
      • 1970-01-01
      • 2022-11-24
      相关资源
      最近更新 更多