数据框中日期更改的自动编号
auto numbering on a date change in dataframe
我想在日期发生变化时在数据框中获取自动增量数字。请有任何建议。
我想要屏幕截图中所附的输出。
每当您调用更改日期的方法时,只需将相应行的 SiNo 值加 1。
这里有一种方法可以满足您的需求,即使您的日期未排序也能正常工作:
In [65]: df = pd.DataFrame(dict(a = [1,2,2,3,3,3,4,4,4,4,5,5,5]))
In [66]: df
Out[66]:
a
0 1
1 2
2 2
3 3
4 3
5 3
6 4
7 4
8 4
9 4
10 5
11 5
12 5
In [67]: df['runlen'] = None
In [68]: for v in df.a.unique():
...: df.loc[df.a==v, 'runlen'] = range(1, df[df.a==v].shape[0]+1)
...:
In [69]: df
Out[69]:
a runlen
0 1 1
1 2 1
2 2 2
3 3 1
4 3 2
5 3 3
6 4 1
7 4 2
8 4 3
9 4 4
10 5 1
11 5 2
12 5 3
试试这个:
df['Date'] = pd.to_datetime(df['Date'])
df.assign(SINo=df.groupby('Date').cumcount()+1)
Date SINo
0 2020-10-08 1
1 2020-10-24 1
2 2020-10-24 2
3 2020-10-24 3
4 2020-10-24 4
5 2020-10-31 1
6 2020-11-08 1
7 2020-11-19 1
8 2020-11-24 1
9 2020-11-24 2
10 2020-12-01 1
11 2020-12-05 1
您可以使用 cumcount
轻松完成:
>>> df["SINo"] = df.groupby("Date").cumcount() + 1
>>> df
Date SINo
0 2020-10-08 1
1 2020-10-24 1
2 2020-10-24 2
3 2020-10-24 3
4 2020-10-24 4
5 2020-10-31 1
6 2020-11-08 1
7 2020-11-19 1
8 2020-11-24 1
9 2020-11-24 2
10 2020-12-01 1
11 2020-12-05 1
我想在日期发生变化时在数据框中获取自动增量数字。请有任何建议。
我想要屏幕截图中所附的输出。
每当您调用更改日期的方法时,只需将相应行的 SiNo 值加 1。
这里有一种方法可以满足您的需求,即使您的日期未排序也能正常工作:
In [65]: df = pd.DataFrame(dict(a = [1,2,2,3,3,3,4,4,4,4,5,5,5]))
In [66]: df
Out[66]:
a
0 1
1 2
2 2
3 3
4 3
5 3
6 4
7 4
8 4
9 4
10 5
11 5
12 5
In [67]: df['runlen'] = None
In [68]: for v in df.a.unique():
...: df.loc[df.a==v, 'runlen'] = range(1, df[df.a==v].shape[0]+1)
...:
In [69]: df
Out[69]:
a runlen
0 1 1
1 2 1
2 2 2
3 3 1
4 3 2
5 3 3
6 4 1
7 4 2
8 4 3
9 4 4
10 5 1
11 5 2
12 5 3
试试这个:
df['Date'] = pd.to_datetime(df['Date'])
df.assign(SINo=df.groupby('Date').cumcount()+1)
Date SINo
0 2020-10-08 1
1 2020-10-24 1
2 2020-10-24 2
3 2020-10-24 3
4 2020-10-24 4
5 2020-10-31 1
6 2020-11-08 1
7 2020-11-19 1
8 2020-11-24 1
9 2020-11-24 2
10 2020-12-01 1
11 2020-12-05 1
您可以使用 cumcount
轻松完成:
>>> df["SINo"] = df.groupby("Date").cumcount() + 1
>>> df
Date SINo
0 2020-10-08 1
1 2020-10-24 1
2 2020-10-24 2
3 2020-10-24 3
4 2020-10-24 4
5 2020-10-31 1
6 2020-11-08 1
7 2020-11-19 1
8 2020-11-24 1
9 2020-11-24 2
10 2020-12-01 1
11 2020-12-05 1