gpt4 book ai didi

python - 根据条件计算出现次数并保存在新列中

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:07 25 4
gpt4 key购买 nike

我对 pandas/python 比较陌生。我有一份姓名和日期列表。我想按名称对条目进行分组,并计算“2016 年之后”和“2016 年之前”的名称数量。该计数应添加到新列中。

我的输入:

Name    Date
Marc 2006
Carl 2003
Carl 2002
Carl 1990
Marc 1999
Max 2016
Max 2014
Marc 2006
Carl 2003
Carl 2002
Carl 2019
Marc 1999
Max 2016
Max 2014

输出应该是这样的:

      Before
2016 Count
Marc 1 4
Marc 0 0
Carl 1 5
Carl 0 1
Max 1 2
Max 0 2

因此,输出中的每个名称应该有 2 个条目,一个包含 2016 年之前的名称计数,一个包含 2016 年之后的名称。 Addtionally 一列仅统计 2016 年之前的 1 和之后的 0。

如前所述,我是一个初学者。我能够根据年份的情况计算条目数:

df.groupby('Name')['Date'].apply(lambda x: (x<'2016').sum()).reset_index(name='count')

但老实说,我不太确定下一步该做什么。也许有人可以为我指出正确的方向。

最佳答案

您可以将返回 2x2 数据帧的函数传递给 apply。像这样:

def counting(x):
bef = (x < 2016).sum()
aft = (x > 2016).sum()
return pd.DataFrame([[1, bef], [0, aft]], index=[x.name, x.name], columns=["before 2016", "Count"])

ddf = df.groupby('Name')['Date'].apply(counting).reset_index(level=0, drop=True)

ddf 是:

      before 2016  Count
Carl 1 5
Carl 0 1
Marc 1 4
Marc 0 0
Max 1 2
Max 0 0

关于python - 根据条件计算出现次数并保存在新列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58135996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com