与pandas有条件合并
我有一个 pandas 数据框,如下所示,其中详细说明了对某个区域的其他调用:
commsdate | area | day0 incremental | day1 incremental | day2 incremental |
---|---|---|---|---|
01/01/24 | sales | 43 | 36 | 29 |
01/01/24 | service | 85 | 74 | 66 |
02/01/24 | sales | 56 | 42 | 31 |
02/01/24 | service | 73 | 62 | 49 |
03/01/24 | sales | 48 | 32 | 24 |
03/01/24 | service | 67 | 58 | 46 |
我正在尝试按日期计算收到的电话数量,因此 1 月 1 日收到的销售电话将是该日期的 day0_incremental (43),1 月 2 日将是 1 月 2 日的 day0 加上 1 月 1 日的 day1 (36+) 56) 和 1 月 3 日将是 1 月 3 日的 day0 加上 1 月 2 日的 day1 加上 1 月 1 日的 day2 (48+42+29),产生以下数据框:
CallDate | Sales | Service |
---|---|---|
01/01/24 | 43 | 85 |
02/01/24 | 92 | 147 |
03/01/24 | 119 | 195 |
04/01/24 | 63 | 107 |
05/01/24 | 24 | 46 |
我已经成功地为第二个表创建了数据框的外壳,在区域列下没有值,但不知道接下来的步骤:
df['commsdate'] = pd.to_datetime(df['commsdate'], format='%d/%m/%y') areaunique = df['area'].unique().tolist() from datetime import timedelta calldate = pd.date_range(start=min(df['commsdate']), end=max(df['commsdate'])+timedelta(days=6), freq='d') data = {area: [] for area in areaunique} dfnew = pd.dataframe(data) dfnew['calldate'] = calldate dfnew = dfnew.melt(id_vars=['calldate'], var_name='area') dfnew = dfnew.pivot(index='calldate', columns='area', values='value') dfnew = dfnew.reset_index() dfnew = dfnew[['calldate'] + areaunique]
我已经开始编写 for 循环,但我只做到了这一点:
for i in range(1,len(areaunique)+1): dfnew.columns(i) =
正确答案
df['commsdate'] = pd.to_datetime(df['commsdate'], dayfirst=true) tmp = df.pivot(index='commsdate', columns='area') out = (tmp['day0 incremental'] .add(tmp['day1 incremental'].shift(freq='1d'), fill_value=0) .add(tmp['day2 incremental'].shift(freq='2d'), fill_value=0) .reset_index().rename_axis(columns=none) )
或者,使用从 dayx …
字符串中提取的数字以编程方式使用 functools.reduce
:
from functools import reduce import re reg = re.compile(r'day(\d+)') df['commsdate'] = pd.to_datetime(df['commsdate'], dayfirst=true) tmp = df.pivot(index='commsdate', columns='area') out = reduce(lambda a,b: a.add(b, fill_value=0), (tmp[d].shift(freq=f'{reg.search(d).group(1)}d') for d in tmp.columns.get_level_values(0).unique()) ).reset_index().rename_axis(columns=none)
输出:
CommsDate Sales Service 0 2024-01-01 43.0 85.0 1 2024-01-02 92.0 147.0 2 2024-01-03 119.0 195.0 3 2024-01-04 63.0 107.0 4 2024-01-05 24.0 46.0
以上是与pandas有条件合并的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

本文解释了如何使用美丽的汤库来解析html。 它详细介绍了常见方法,例如find(),find_all(),select()和get_text(),以用于数据提取,处理不同的HTML结构和错误以及替代方案(SEL)

本文比较了Tensorflow和Pytorch的深度学习。 它详细介绍了所涉及的步骤:数据准备,模型构建,培训,评估和部署。 框架之间的关键差异,特别是关于计算刻度的

Python的statistics模块提供强大的数据统计分析功能,帮助我们快速理解数据整体特征,例如生物统计学和商业分析等领域。无需逐个查看数据点,只需查看均值或方差等统计量,即可发现原始数据中可能被忽略的趋势和特征,并更轻松、有效地比较大型数据集。 本教程将介绍如何计算平均值和衡量数据集的离散程度。除非另有说明,本模块中的所有函数都支持使用mean()函数计算平均值,而非简单的求和平均。 也可使用浮点数。 import random import statistics from fracti

本文讨论了诸如Numpy,Pandas,Matplotlib,Scikit-Learn,Tensorflow,Tensorflow,Django,Blask和请求等流行的Python库,并详细介绍了它们在科学计算,数据分析,可视化,机器学习,网络开发和H中的用途

本文指导Python开发人员构建命令行界面(CLIS)。 它使用Typer,Click和ArgParse等库详细介绍,强调输入/输出处理,并促进用户友好的设计模式,以提高CLI可用性。

在使用Python的pandas库时,如何在两个结构不同的DataFrame之间进行整列复制是一个常见的问题。假设我们有两个Dat...

文章讨论了虚拟环境在Python中的作用,重点是管理项目依赖性并避免冲突。它详细介绍了他们在改善项目管理和减少依赖问题方面的创建,激活和利益。
