Python 跟踪随时间顺序数据移动的有效方法
我的数据框架中有一些有序数据列,我想跟踪这些类别在层次结构中随时间的推移是如何上升还是下降的 例如,如果我的数据帧看起来像:Python 跟踪随时间顺序数据移动的有效方法,python,pandas,Python,Pandas,我的数据框架中有一些有序数据列,我想跟踪这些类别在层次结构中随时间的推移是如何上升还是下降的 例如,如果我的数据帧看起来像: Date Animal OrdinalCategory Mar A Good Mar B Worse Jun A Bad Jun B Worse Jun C Bad Jun D Bad Sep B Bad Sep D Wors
Date Animal OrdinalCategory
Mar A Good
Mar B Worse
Jun A Bad
Jun B Worse
Jun C Bad
Jun D Bad
Sep B Bad
Sep D Worse
我想创建两个新的列,以表明该动物是新的条目还是在随后的季度退出
同样,我想跟踪进展情况,并指出该类别是否有所改善或恶化。
因此,我的新df看起来像:
Date Animal OrdinalCategory EntryExit Progress
Mar A Good
Mar B Worse
Jun A Bad Gone in next Down from previous
Jun B Worse
Jun C Bad New&Gone in next
Jun D Bad New
Sep B Bad Up from Previous
Sep D Worse Down from Previous
你能就实现这一目标的最有效方式提出建议吗
我以前做过的非常繁琐的方法是比较每个字符串(使用shift函数)和np.where子句来填充新列。但我发现这显然是低效的。用一种稍微不同的方式处理这个问题
ordered_categpry = ['NA', 'Good', 'Bad', 'Worse']
df.OrdinalCategory.astype("category",
ordered=True,
categories=ordered_categpry
).cat.codes
对于出入口概率,创建了两列来指示动物何时首先进入,何时在数据中最后出现
df['first_occured']=df['Animal'].map(df[df.OrdinalCategory!="NA"].drop_duplicates(['Animal'],keep='first').set_index(['Animal'])['Date'])
df['last_occured']=df['Animal'].map(df[df.OrdinalCategory!="NA"].drop_duplicates(['Animal'],keep='last').set_index(['Animal'])['Date'])
@jezrael你能帮个忙吗:)耶,我明白了,但真的很复杂…似乎有一些循环解决方案是必要的,但因为我对循环不感兴趣,所以我不寻找解决方案是的,我也不喜欢循环。。也许需要将问题分解成多个部分..嗯,我只是一个业余程序员:)