首页 > 编程问答 >Python - 逆透视数据框

Python - 逆透视数据框

时间:2024-07-23 05:00:17浏览次数:14  
标签:python pandas dataframe

我有一个按日期时间索引的表,每个日期时间都有多个层(中心和交货间隔):

日期时间 中心 交货间隔 结算点价格
2024-01- 01 01:00:00 休斯顿中心 1 13.35
2024-01-01 01:00:00 休斯顿中心 2 16.60
2024- 01-01 01:00:00 休斯顿中心 3 17.15
2024-01-01 01:00:00 休斯顿中心 4 23.61
2024-01-01 01:00:00 北枢纽 1 13.35
2024-01-01 01:00:00 北枢纽 2 11.41| ||2024-01-01 01:00:00
北枢纽 3 32.11 2024-01-01 01:00:00
北枢纽 4 16.60 理想情况下,我想为“中心”列中的所有唯一条目创建一个新列,并对同一“中心”的相同日期时间的所有“结算点价格”进行平均。做这个的最好方式是什么?我试图让它成为这样的:

日期时间

交货间隔 休斯顿中心 北中心 2024-01-01 01:00:00
N/ A(平均) 17.68 18.37 抱歉,我在这方面花了很长时间,而且我是初学者。谢谢!

我尝试为每个独特的中心动态创建一个新的数据帧,但有人建议不要这样做,而且我无论如何也无法使平均值发挥作用。

I've tried to dynamically make a new dataframe for each of the unique hubs but someone recommended not to do this and I couldn't get the averaging to work anyway.


import pandas as pd

# 你的示例数据
df = pd.DataFrame({
    'DateTime': ['2024-01-01 01:00:00'] * 7,
    'Hub': ['Houston Hub', 'Houston Hub', 'Houston Hub', 'Houston Hub', 'North Hub', 'North Hub', 'North Hub'],
    'Delivery Interval': [1, 2, 3, 4, 1, 2, 3],
    'Settlement Point Price': [13.35, 16.60, 17.15, 23.61, 13.35, 11.41, 32.11]
})

# 使用 pivot_table 进行透视
result = df.pivot_table(index='Delivery Interval', columns='Hub', values='Settlement Point Price', aggfunc='mean')

# 添加平均值行
result.loc['N/A (Average)'] = result.mean()

print(result)

这将输出:

Hub                  Houston Hub   North Hub
Delivery Interval                          
1                     13.350000   13.350000
2                     16.600000   11.410000
3                     17.150000   32.110000
4                     23.610000        NaN
N/A (Average)         17.677500   18.956667

说明:

  1. pivot_table 我们使用 Pandas 的 pivot_table 函数来重塑数据。
  2. index='Delivery Interval' :将“Delivery Interval”设置为新的索引。
  3. columns='Hub' :将“Hub”列中的唯一值用作新列。
  4. values='Settlement Point Price' :使用“Settlement Point Price”列中的值填充表格。
  5. aggfunc='mean' :对每个 Hub 和 Delivery Interval 组合使用 mean 函数计算平均值。

  6. loc['N/A (Average)'] = result.mean() 这行代码添加了一个名为“N/A (Average)”的新行,其中包含每列的平均值。

这个代码将创建一个透视表,其中“Delivery Interval”为索引,“Houston Hub”和“North Hub”为列,并且每个单元格中都包含相应组合的“Settlement Point Price”的平均值。

标签:python,pandas,dataframe
From: 78780739

相关文章

  • 试图理解这个错误:致命的Python错误:PyEval_RestoreThread:该函数必须在持有GIL的情况下
    我有一个小型tkinter应用程序,我一直在其中实现最小的“拖放”,主要作为学习实验。我真正关心的是删除文件的文件路径。一切实际上都工作正常,直到我尝试在拖放后打包标签小部件。下面的最小工作示例。有问题的行会用注释指出。我通常不会在调试方面遇到太多麻烦,但我只是不知......
  • 如何使代码格式再次适用于 Python(Mac 上的 Visual Studio Code)?
    在Mac上,Option+Shift+F现在会显示“没有安装用于‘python’文件的格式化程序”。消息框:我尝试安装这个插件,但没有看到这种情况的变化:我已经为Python安装了这两个插件:但是正如@starball提到的,它可能已经减少了支持现在。......
  • 无法在 python 中安装 pip install expliot - bluepy 的 Building Wheel (pyproject.t
    在此处输入图像描述当我尝试在Windows计算机中通过cmd安装pipinstallexpliot包时,我收到2个错误名称×Buildingwheelforbluepy(pyproject.toml)didnotrunsuccessfully.│exitcode:1**AND**opt=self.warn_dash_deprecation......
  • python 用单斜杠-反斜杠替换url字符串中的双斜杠
    我的URL包含错误的双斜杠(“//”),我需要将其转换为单斜杠。不用说,我想保持“https:”后面的双斜杠不变。可以在字符串中进行此更改的最短Python代码是什么?我一直在尝试使用re.sub,带有冒号否定的正则表达式(即,[^:](//)),但它想要替换整个匹配项(包括前面......
  • 如何使用 Selenium Python 搜索 Excel 文件中的文本
    我有一些数据在Excel文件中。我想要转到Excel文件,然后搜索文本(取自网站表),然后获取该行的所有数据,这些数据将用于在浏览器中填充表格。示例:我希望selenium搜索ST0003然后获取名称,该学生ID的父亲姓名,以便我可以在大学网站中填写此信息。我想我会从网站......
  • Python 套接字请求在很多情况下都会失败
    我在python中尝试了超过5种不同的方法,尽管人们说它在其他论坛上有效,但所有这些方法都惨遭失败。importsocketmessage="test"clientsocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)clientsocket.connect(('1.1.1.1',80))clientsocket.send(mes......
  • Python 网络套接字
    我一直尝试通过Python访问该网站的websocket,但是需要绕过CloudFlare,现在我尝试通过cookie进行绕过,但是这不起作用。我已经尝试在没有cookie的情况下执行此操作,但这也不起作用。importwebsocketimportbase64importosdriver=selenium.webdriver.Firefox()driver.ge......
  • 如何在Python中使用Selenium提取data-v-xxx?
    因为我想查看每个class='num'内的文本是否大于0。如果测试通过,那么我需要获取venuen-name内的文本。我观察到,data-v是相同的。所以我的方法是获取相同的data-v-<hashvalue>来查找场地名称。我尝试了不同的方法来提取,但仍然无法提取。有什么建议吗?这是DOM<div......
  • Python:添加异常上下文
    假设我想提出一个异常并提供额外的处理信息;最好的做法是什么?我想出了以下方法,但对我来说有点可疑:definternal_function():raiseValueError("smellysocks!")defcontext_function():try:internal_function()exceptExceptionase:......
  • 【视频】Python遗传算法GA优化SVR、ANFIS预测证券指数ISE数据-CSDN博客
    全文链接:https://tecdat.cn/?p=37060本文旨在通过应用多种机器学习技术,对交易所的历史数据进行深入分析和预测。我们帮助客户使用了遗传算法GA优化的支持向量回归(SVR)、自适应神经模糊推理系统(ANFIS)等方法,对数据进行了特征选择、数据预处理、模型训练与评估。实验结果表明,这些方法......