gpt4 book ai didi

Python 以聚合方式操作时间序列数据

转载 作者:行者123 更新时间:2023-12-01 07:57:46 25 4
gpt4 key购买 nike

我有一个时间序列数据框,其中包含如下所示的列:

    perf_date  pull_date  clicks  conv      rev 
2019-01-21 2019-01-28 56 9 44.12
2019-01-22 2019-01-28 56 10 44.70
2019-01-29 56 10 44.70
2019-01-23 2019-01-28 59 13 89.31
2019-01-29 59 13 89.31
2019-01-30 59 14 95.31

我想做的是:1) 根据每个 perf_date 保留第一行的所有行值。2) 将最大 pull_date 的收入值附加到每个 perf_date。因此,在操作之后,上面的数据框应该是这样的:

    perf_date  pull_date  clicks  conv      rev 
2019-01-21 2019-01-28 56 9 44.12
2019-01-22 2019-01-28 56 10 44.70
2019-01-23 2019-01-28 59 13 95.31

最佳答案

使用GroupBy.agg使用具有聚合函数的列字典 - 您可以手动或动态传递它 - 所有没有 perf_daterev 的列均由 first 聚合>rev by last:

#if necessary
df['perf_date'] = df['perf_date'].ffill()
df = df.sort_values(['perf_date','pull_date'])

d = dict.fromkeys(df.columns.difference(['perf_date','rev']), 'first')
d['rev'] = 'last'
print (d)
{'clicks': 'first', 'conv': 'first', 'pull_date': 'first', 'rev': 'last'}

df = df.groupby('perf_date', as_index=False).agg(d).reindex(df.columns, axis=1)
print (df)
perf_date pull_date clicks conv rev
0 2019-01-21 2019-01-28 56 9 44.12
1 2019-01-22 2019-01-28 56 10 44.70
2 2019-01-23 2019-01-28 59 13 95.31

编辑:

d = dict.fromkeys(df.columns.difference(['perf_date','rev']), 'first')
df1 = df.groupby('perf_date', as_index=False).agg(d)
s = df.groupby('perf_date')['rev'].nth(2)
df = df1.join(s, on='perf_date')
print (df)
perf_date clicks conv pull_date rev
0 2019-01-21 56 9 2019-01-28 NaN
1 2019-01-22 56 10 2019-01-28 NaN
2 2019-01-23 59 13 2019-01-28 95.31

关于Python 以聚合方式操作时间序列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55879291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com