python - 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 列:
- New1 = 具有“活动”状态的最后一个协议的类别
- New2 = 具有“已完成”状态的最后协议的类别
为了更精确,我给出了结果DataFrame:
解决方案
假设数据框已经按日期排序,我们希望保留最后一行 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。
推荐阅读
- python - 将数字添加到字符串 (Python)
- scala - 当同时使用默认参数和多态时,scala 会选择哪种方法?
- excel - VBA数据输入表单的上一个和下一个按钮功能不起作用
- python - 如何在 Python 谷歌云存储库方法 list_blobs 中获取下一个 blob
- django - Django - 如何显示投票应用程序的多个选项
- php - 如何解决在 PHP 和 Mysql 中选择多个列?
- r - 如何使用 R 在布局中绘制 geom_ribbon 以绘制 3 y 轴
- python - Python通过复制日期索引将列合并为一列
- javascript - 根据孩子绝对div制作父div高度
- mysql - Sql计算不同的值