首页 > 解决方案 > Python Pandas 中 DataFrame 中的数据操作?

问题描述

我有如下数据框:

rng = pd.date_range('2020-12-01', periods=5, freq='D')
df = pd.DataFrame({"ID" : ["1", "2", "1", "2", "2"],
                   "category" : ["A", "B", "A", "C", "B"],
                   "status" : ["active", "finished", "active", "finished", "other"],
                   "Date": rng})

我需要创建 DataFrame 并计算 2 列:

  1. New1 = 具有“活动”状态的最后一个协议的类别
  2. New2 = 具有“已完成”状态的最后协议的类别

为了更精确,我给出了结果DataFrame:

在此处输入图像描述

标签: pythonpandasdataframe

解决方案


假设数据框已经按日期排序,我们希望保留最后一行 where"status"=="active"和最后一行 where "status"=="finished"。我们还想只保留第一列和第二列,我们将类别重命名为“New1”以表示活动状态,将“New2”重命名为“完成状态”。

last_active = df[df.status == "active"].iloc[-1, [0, 1]].rename({"category": "New1"})
last_finished = df[df.status == "finished"].iloc[-1, [0, 1]].rename({"category": "New2"})

我们有两个熊猫系列,我们想要并排连接,然后转置为每行一个条目:

pd.concat([last_active, last_finished], axis=1, sort=False).T

也许,您还想在之后调用“reset_index()”,以便在生成的 DataFrame 中有一个新的 RangeIndex。


推荐阅读