Python 3.x 数据帧上的多个日期操作

Python 3.x 数据帧上的多个日期操作,python-3.x,pandas,Python 3.x,Pandas,我有一个数据框,我需要按日期过滤。例如,我的数据集示例如下所示: df: id日期时间促销波 1373662702022019-10-20 10:11:58 7560摄氏度 1553376 2702 2019-10-20 10:11:58 8859 C 49686227422019-10-1120:39:2976A 39886022742019-10-1120:39:295413B 50676729872019-10-3020:52:468533摄氏度 9163062987 2019-10-30

我有一个数据框,我需要按日期过滤。例如,我的数据集示例如下所示:

df:

id日期时间促销波
1373662702022019-10-20 10:11:58 7560摄氏度
1553376 2702 2019-10-20 10:11:58 8859 C
49686227422019-10-1120:39:2976A
39886022742019-10-1120:39:295413B
50676729872019-10-3020:52:468533摄氏度
9163062987 2019-10-30 20:52:46 9447 D
1234493281612019-10-1413:12:506470A
141553428162019-10-1413:12:505888A
38148323342019-10-2414:20:299318D
121726123342019-10-2414:20:290573 F
所有ID都应该基于Waves(A-F顺序)获取促销信息 我想检查一下是否有ID以不同的顺序得到了促销品。例如,在A之前获得波F或在A之前获得波B等等

我无法提出一个可以做到这一点的查询。我所做的是按id、日期和时间对数据集进行排序。但是,由于有2米以上的行,很难检查出现差异的位置

df.sort_值(按=['id','date','time'],inplace=True]

非常感谢您的帮助!

这将返回发生这种情况的
id
s列表,假设您的
df
已按您所提到的顺序排序

将字符转换为数字(
wave\u num
),将计算
wave\u num
之间的差值,然后您只需查看哪个
id
的差值为负值

import pandas as pd
df = pd.DataFrame({'id':[1,1,2,2,2,4],
                   'wave':['C','A','A','B','C','A']})
df['wave_num'] = df['wave'].apply(lambda x: ord(x))
df['difference'] = df.groupby('id')['wave_num'].diff()
list(df.loc[(df.difference<0)]['id'].unique())
将熊猫作为pd导入
df=pd.DataFrame({'id':[1,1,2,2,4],
‘波浪’:[‘C’、‘A’、‘A’、‘B’、‘C’、‘A’]})
df['wave_num']=df['wave'].应用(λx:ord(x))
df['difference']=df.groupby('id')['wave_num'].diff()
列表(df.loc[(df.difference您可以做的是:

# once this is done
df.sort_values(by=['id','date','time'], inplace=True)

# create two columns
df["wave_ordered"] = df[["id", "Wave"]].groupby(["id"])["Wave"].transform(lambda x: ' '.join(x))
df["is_ordered"] = df["wave_ordered"].transform(lambda x: x.split() == sorted(x.split()))
是按顺序排列的
可以指示个人的促销是否按“正确”顺序排列

为了识别出现差异的个人,您需要做的就是:

set(df[df["is_ordered"] == False]["id"])