gpt4 book ai didi

python - 如何根据pandas中的某些条件创建row_number

转载 作者:行者123 更新时间:2023-11-30 22:11:17 25 4
gpt4 key购买 nike

我有一个像这样的数据框:

   Clinic Number        date
0 1 2015-05-05
1 1 2015-05-05
2 1 2016-01-01
3 2 2015-05-05
4 2 2016-05-05
5 3 2017-05-05
6 3 2017-05-05

我想创建一个新列并根据某些条件填写它。所以新的数据框应该是这样的:

   Clinic Number    date      row_number
0 1 2015-05-05 1
1 1 2015-05-05 1
2 1 2016-01-01 2
3 2 2015-05-05 3
4 2 2016-05-05 4
5 3 2017-05-05 5
6 3 2017-05-05 5

将条目放入新列的规则是什么:如果诊所编号和日期相同,他们将得到相同的数字,如果发生变化,则会增加。

例如,这里 1 2015-05-05 有两行具有相同的诊所编号和日期,因此它们都得到 1。下一行的诊所编号=1,但日期与前几行不同,因此将得到 2。其中 Clinic Number=2 没有诊所编号=2 且日期相同的行,因此它为 3,下一行是 4。 ..

到目前为止我已经尝试过这样的事情:

def createnumber(x):
x['row_number'] = i

d['row_number']= pd1.groupby(['Clinic Number','date']).apply(createnumber)

但我不知道如何实现这个功能。

如果您能帮助我,我将不胜感激:)我还查看了类似 this 的链接但它们不是动态的(我的意思是这里行数应该根据某些条件增加)

最佳答案

您可以这样做,而不是使用groupby,单独命名您的条件。因此,如果日期发生变化或诊所编号发生变化,您将返回 True,然后获取这些 True 值的 cumsum:

df['row_number'] = (df.date.ne(df.date.shift()) | df['Clinic Number'].ne(df['Clinic Number'].shift())).cumsum()


>>> df
Clinic Number date row_number
0 1 2015-05-05 1
1 1 2015-05-05 1
2 1 2016-01-01 2
3 2 2015-05-05 3
4 2 2016-05-05 4
5 3 2017-05-05 5

您需要确保您的数据框首先按 Clinic NumberDate 排序(您可以执行 df.sort_values(['Clinic Number' , 'date'], inplace=True) 如果尚未排序)

关于python - 如何根据pandas中的某些条件创建row_number,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51467866/

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