我有这样一个数据帧:
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
我想创建一个新列,并根据某些条件填写它。所以新的数据帧应该是这样的:
^{pr2}$将条目放入新列的规则是什么: 如果诊所的号码和日期相同,他们将得到相同的号码,如果它改变,它将增加。在
例如这里的1 2015-05-05
有两行具有相同的Clinic Number and date
,所以它们都得到1
。下一行的Clinic Number=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
:您需要确保您的数据帧首先按
Clinic Number
和Date
排序(如果还没有排序,可以执行df.sort_values(['Clinic Number', 'date'], inplace=True)
排序)相关问题 更多 >
编程相关推荐