计算列中每个id的连续重复值

2024-05-16 22:32:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理历史数据,并且我想存储每个ID在过去20次中相同的数据

所以我有一个这样的表,order with date DESC:(我想加上这个COUNT列)

id  flight_code src_terminal    departure_at      COUNT
0   YW-MAD-BOD      4           2019-11-13          0
1   YW-MAD-BOD      4           2019-11-13          1
2   YW-MAD-BOD      4           2019-11-10          2
3   YW-MAD-BOD      4           2019-11-09          3
4   YW-MAD-BOD      4           2019-11-08          4
5   YW-MAD-BOD      4           2019-11-08          5
6   YW-MAD-BOD      4           2019-11-07          6
7   YW-MAD-BOD      4           2019-11-07          7
8   YW-MAD-BOD      5           2019-11-06          0
9   YW-MAD-BOD      4           2019-11-05          0
44  XQ-ADB-AYT      D           2019-11-13          0
45  XQ-ADB-AYT      D           2019-11-12          2
46  XQ-ADB-AYT      D           2019-11-11          3
47  XQ-ADB-AYT      D           2019-11-10          4
48  XQ-ADB-AYT      D           2019-11-10          5
49  XQ-ADB-AYT      D           2019-11-09          6

所以我想逐行检查航班代码是否=到前一行航班代码,如果是,检查src\u terminal是否=到前一行src\u terminal和sum+1

稍后当我有这个专栏的时候,我想过滤那些有超过20倍相同终端的

我试过这个,但似乎不起作用:

for i in range(2,len(df)):
  x=0
  count=[]
  while (df.flight_code.loc[i] == df.flight_code.loc[i-1]) & (df.src_terminal.loc[i] == df.src_terminal.loc[i-1]):
    x=x+1
    count.append[x]
    if (df.flight_code.loc[i] != df.flight_code.loc[i-1]):
      break

我怎样才能只得到一个航班代码列表?src\ U终端从第一天(最近一天)到20多天都是一样的吗?以下是我需要保留的示例: graphic example


Tags: 代码srcdfcountcodelocterminalflight
1条回答
网友
1楼 · 发布于 2024-05-16 22:32:30

使用^{}

groups=df[['flight_code','src_terminal']].ne(df[['flight_code','src_terminal']].shift()).cumsum().sum(axis=1)
df['COUNT']=df.groupby(groups).cumcount()
print(df)

    id flight_code src_terminal departure_at  COUNT
0    0  YW-MAD-BOD            4   2019-11-13      0
1    1  YW-MAD-BOD            4   2019-11-13      1
2    2  YW-MAD-BOD            4   2019-11-10      2
3    3  YW-MAD-BOD            4   2019-11-09      3
4    4  YW-MAD-BOD            4   2019-11-08      4
5    5  YW-MAD-BOD            4   2019-11-08      5
6    6  YW-MAD-BOD            4   2019-11-07      6
7    7  YW-MAD-BOD            4   2019-11-07      7
8    8  YW-MAD-BOD            5   2019-11-06      0
9    9  YW-MAD-BOD            4   2019-11-05      0
10  44  XQ-ADB-AYT            D   2019-11-13      0
11  45  XQ-ADB-AYT            D   2019-11-12      1
12  46  XQ-ADB-AYT            D   2019-11-11      2
13  47  XQ-ADB-AYT            D   2019-11-10      3
14  48  XQ-ADB-AYT            D   2019-11-10      4
15  49  XQ-ADB-AYT            D   2019-11-09      5

分组详情

print(groups)
0     2
1     2
2     2
3     2
4     2
5     2
6     2
7     2
8     3
9     4
10    6
11    6
12    6
13    6
14    6
15    6
dtype: int64

相关问题 更多 >