Python 检查数据帧列中的序列
我的数据框如下所示:Python 检查数据帧列中的序列,python,pandas,series,Python,Pandas,Series,我的数据框如下所示: Category Date 81 Monate 2020-01-01 88 Monate 2020-01-02 58 Monate 2020-01-03 3 Monate 2020-01-04 23 Monate 2020-01-05 .. ... ... 134 Wochen 2020-05-24 145 Tage 2020-05-25 147 Tage 2020-05-26
Category Date
81 Monate 2020-01-01
88 Monate 2020-01-02
58 Monate 2020-01-03
3 Monate 2020-01-04
23 Monate 2020-01-05
.. ... ...
134 Wochen 2020-05-24
145 Tage 2020-05-25
147 Tage 2020-05-26
146 Tage 2020-05-27
148 Tage 2020-05-28
它是按日期排序的。我需要检查每一行Monate是否跟Monate,Wochen是否跟Wochen等等。允许沃辰跟随Monate,塔吉跟随沃辰。我希望我的意思很清楚。看起来这会导致错误,因为序列无效
Category Date
81 Monate 2020-01-01
88 Monate 2020-01-02
58 Tage 2020-01-03
3 Monate 2020-01-04
23 Monate 2020-01-05
.. ... ...
134 Wochen 2020-05-24
145 Tage 2020-05-25
147 Tage 2020-05-26
146 Wochen 2020-05-27
148 Tage 2020-05-28
我可以试着在每一行上写一个相当复杂而且可能很慢的迭代
for row in result_df.iterrows():
do xyz
有没有更好、更快的方法来检查序列中正在进行的序列,或者列表、字典等中的序列?我相信您可以创建一个数字字典,说明顺序,替换类别列的值,并检查
序列。diff
与序列之间是否从不为负。所有:
def check(dataframe):
d = {'Monate':1,'Wochen':2,'Tage':3}
return dataframe['Category'].replace(d).diff().fillna(0).ge(0).all()
测试运行:
print(df,'\n\n',f"Valid? : {check(df)}",'\n\n',df1,'\n\n',f"Valid? : {check(df1)}")
Category Date
81 Monate 2020-01-01
88 Monate 2020-01-02
58 Monate 2020-01-03
3 Monate 2020-01-04
23 Monate 2020-01-05
134 Wochen 2020-05-24
145 Tage 2020-05-25
147 Tage 2020-05-26
146 Tage 2020-05-27
148 Tage 2020-05-28
Valid? : True
Category Date
81 Monate 2020-01-01
88 Monate 2020-01-02
58 Tage 2020-01-03
3 Monate 2020-01-04
23 Monate 2020-01-05
134 Wochen 2020-05-24
145 Tage 2020-05-25
147 Tage 2020-05-26
146 Wochen 2020-05-27
148 Tage 2020-05-28
Valid? : False