在Python Pandas中基于DataFrame中的日期进行值计算?

传闻154

我有带有客户协议的DataFrame,如下所示:

rng = pd.date_range('2020-12-01', periods=5, freq='D')
df = pd.DataFrame({ "ID" : ["1", "2", "1", "2", "2"],
                   "value" : [100, 200, 300, 400, 500],
                   "status" : ["active", "finished", "active", "finished", "active"],
                   "Date": rng})

而且我需要根据上述df创建一个新的DataFrame并进行计算:

  1. New1 =状态为“有效”的最后一个协议的值
  2. New2 =状态为“完成”的最后一个协议的值

为了更精确,我需要创建如下的df:

在此处输入图片说明

耶斯列尔

使用DataFrame.sort_values通过这两列DataFrame.pivot_table与聚合函数last

df = (df.sort_values(['ID','Date'])
        .pivot_table(index='ID', columns='status', values='value', aggfunc='last')
        .rename(columns={'active':'New1','finished':'New2'})[['New1','New2']]
        .reset_index()
        .rename_axis(None,axis=1)
       )
print (df)
  ID   New1   New2
0  1  300.0    NaN
1  2  500.0  400.0

如果按组对日期时间进行排序,则解决方案会更简单:

df = (df.pivot_table(index='ID', columns='status', values='value', aggfunc='last')
        .rename(columns={'active':'New1','finished':'New2'})[['New1','New2']]
        .reset_index()
        .rename_axis(None,axis=1)
       )
print (df)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是否基于Python Pandas中DataFrame中的功能进行计算?

基于Python Pandas中DataFrame中的值的总和?

在Python Pandas中的DataFrame中计算到某个日期的天数?

在Pandas Dataframe中删除重复的日期并合并值-Python

使用python sort函数对Pandas DataFrame中的值进行排序

Python Pandas中的DataFrame中的日期操作?

Python Pandas DataFrame-如何基于另一列(日期类型)中的部分匹配来对一列中的值求和?

Python Pandas:使用基于不同列中的分类值的计算创建新列

Python(pandas)遍历一列中的值,并对每个值进行计算

Python Pandas中DataFrame中的值聚合?

在 Python 中更改 Pandas DataFrame 中的值

计算Pandas数据框-Python中的值

分组并计算pandas / python中的条件值

替换python pandas中的错误日期值

在Python Pandas中的DataFrame中使用日期进行数据操作?

在python中的DataFrame中映射基于图/关系的值

基于pandas / python中条件的加权平均计算

Python Pandas,根据另一列中的值进行日期时间舍入

Python Pandas,根据另一列中的值进行日期时间舍入

基于python pandas中的日期删除非重复记录

给定输入值列表,如何计算 Python 中的 Pandas DataFrame 列的计数?

Python Pandas 比较 DataFrame 单元格中的日期时间值

从Pandas DataFrame Python中删除离群值

从Python Pandas Dataframe中的Date生成值

Python Pandas中DataFrame中的月份计算量?

使用Python Pandas中DataFrame中的日期列吗?

在Python Pandas中的DataFrame中从日期算起od天的问题

Python Pandas:如何计算基于另一个列的值出现在列中的次数?

从python / pandas中的日期/时间格式计算年龄