python-3.x Pandas Dataframe 根据第二列中的值上升到另一列并计数

cpjpxq1n  于 2023-01-27  发布在  Python
关注(0)|答案(1)|浏览(141)

我有以下 Dataframe

我们要计算在他们遇到另一列中的关键字后reason =“end”的次数。例如,关键字列表是hire和career。因此,对于案例ID“1”,“end”在reason列中位于文本列中的hire之后。因此,hire的计数为1。在第二个案例(案例ID“2”)中,“end”在“hire”和“career”之后遇到。但职业是最后一个,因此结束是由于职业而不是雇用。我们需要将“文本”列中的最后一个关键字作为结束的可能原因。因此,“职业”需要计数1。我们需要对每个“ID”执行此操作
样品输出如下

z0qdvdin

z0qdvdin1#

如果你向前填充text列,那么你可以在整个 Dataframe 上放置na,结果将是你想要的reason/text组合,你可以得到剩下的text列的值计数,并将其转换成你想要的df。

import pandas as pd
df = pd.DataFrame({'id':[1,1,1,1,1,2,2,2,2,2],
                  'reason':[np.nan,np.nan,np.nan,'end',np.nan,np.nan,np.nan,np.nan,'end',np.nan],
                  'text':[np.nan,'hire',np.nan,np.nan,'career',np.nan,'hire','career',np.nan,np.nan]})

output = (
  df.assign(text=df['text'].ffill())
    .dropna()
    .text
    .value_counts()
    .to_frame('counts')
    .T
)

print(output)

产出

hire  career
counts     1       1

相关问题