首页 > 编程问答 >如何向 python pandas 数据透视表添加过滤器? (pd.read_excel)

如何向 python pandas 数据透视表添加过滤器? (pd.read_excel)

时间:2024-07-28 08:19:12浏览次数:11  
标签:python excel pandas pivot-table

我正在尝试使用 pandas 库在 python 中重新创建我在 Excel 中制作的数据透视表。我试图用时间段作为过滤器来总结超过 500k 行的 OD 总行程数据。在 Excel 上,我只会执行行(O)、列(D)、值(行程)、过滤器(时间)。到目前为止,在 python 上我只有索引、列、值、aggfunc,但我不知道如何过滤。有 12 个时间段,我只想包含 3 个。

我尝试使用 O/D 作为索引,然后使用时间作为列。有没有办法从数据透视表中删除列? 这是我所拥有的,可以制作包含所有时间的完整数据透视表:

  • import pandas as pd df = pd.read_excel('...xlsx') print(df.pivot_table(index=['O', "D"], columns=['Time'], value=['Trips'], aggfunc='sum'))

我也尝试过: ||print(df[(df.Time == '7am')].pivot_table(index=['O', "D"], columns=['Time'], value='Trips', aggfunc='sum ')) 这对我有用,但我试图包括 3 个不同的时间,所以我尝试了

  • print(df[(df['Time'] == '7am') & (df['Time'] = = '4pm') & (df['Time'] == '全天')].pivot_table(index=['O', "D"], columns=['Time'], value='Trips', aggfunc='sum')) 但这不起作用

  • 我对Python很陌生,而且不可否认,不太了解。因此,如果我需要在 python 的某些方面更加了解才能解决这个问题(或者它是否非常基础),请告诉我。或者任何可以为我指明正确方向的资源。谢谢!

I'm very new to python, and admittedly, don't understand much. So please let me know if I need to become more knowledgeable in some aspect of python to figure this out (or if it's incredibly basic). Or any resources that could point me in the right direction. Thanks!


可以使用几种方法在 pandas 数据透视表中过滤时间段:

1. 在创建数据透视表之前过滤数据

在创建数据透视表之前,可以使用布尔索引过滤数据帧以仅包含所需的时间段。这就是尝试在第二个示例中执行的操作,但语法略有偏差。

times_to_include = ['7am', '4pm', 'All Day']
filtered_df = df[df['Time'].isin(times_to_include)]

pivot_table = filtered_df.pivot_table(index=['O', 'D'], columns=['Time'], values='Trips', aggfunc='sum')
print(pivot_table)

此代码首先创建一个要包含在数据透视表中的时间段列表。然后,它使用 isin() 方法创建一个仅包含这些时间段的数据帧子集。最后,它使用过滤后的数据帧创建数据透视表。

2. 在创建数据透视表后过滤数据

可以创建包含所有时间段的数据透视表,然后使用所需的那些时间段选择列的子集。

pivot_table = df.pivot_table(index=['O', 'D'], columns=['Time'], values='Trips', aggfunc='sum')

times_to_include = ['7am', '4pm', 'All Day']
filtered_pivot_table = pivot_table[times_to_include]
print(filtered_pivot_table)

此代码首先创建包含所有时间段的数据透视表。然后,它选择要包含在最终数据透视表中的时间段列的子集。

解释的错误

(df['Time'] == '7am') & (df['Time'] == '4pm') & (df['Time'] == 'All Day') 中的代码不起作用,因为它试图在同一行中找到三个条件都为真的情况。 Time 列一次只能有一个值,因此这将始终返回一个空的数据帧。这就是为什么使用 isin() 方法很重要,因为它检查时间段列表中的任何值是否存在于每一行中。

这些方法应能帮助使用所需的时间段过滤器创建数据透视表。如果有任何其他问题或需要进一步的说明,请随时提出!

标签:python,excel,pandas,pivot-table
From: 78802718

相关文章

  • 标量添加中的 Python 溢出警告
    我想执行一个简单的操作:b+g+rb,g,r变量是整数并且值低于256。我收到溢出警告和错误的结果。问题是操作很简单(结果不高于765),我不应该收到溢出警告这是我的代码:importcv2ascvimportnumpyasnpimgname='r_hh_classic.png'img=cv.imread(imgname)h,w,_=......
  • 在 Python 中读取部分 MP3 文件时处理“对于可用位计数来说太大”错误
    我正在尝试读取MP3文件的特定部分,但遇到错误:[src/libmpg123/layer3.c:INT123_do_layer3():1771]error:part2_3_length(1376)toolargeforavailablebitcount(760)可以访问音频文件此处我的环境是使用此Docker映像设置的:pytorc......
  • Python SQLAlchemy 2.0 使用 dataclass_transform 非必需字段类型
    我刚刚在一个新项目上安装了SQLAlchemy2.0,我正在尝试使我的模型尽可能类型安全。通过使用@typing_extensions.dataclass_transform,我已经能够实现我想要实现的大部分目标类型检查,但是当前所有字段都被标记为不需要。例如:@typing_extensions.dataclass_tran......
  • 当读取字节时,Python 将 \n 解释为 0xd0
    换行符被解释为Ð(0xd0)而不是(0x0a),我真的不知道如何解决这个问题。我也不知道从哪里开始。当尝试使用此代码时,它将0x0a读为0xd0。withopen(path,"rb")asroot:b_arr=root.read()+b""print("Processing...")buffer=""b_arr......
  • 在Python 3中获取范围的特定形式
    当获取range(1,100)时,我得到:[1,2,3,4,5...99]我需要像这个范围的zip之类的东西:[50,49,51,48,52,47,53...99]如何获取它?背景:这都是关于比特币谜题66的。首先我做了对过去已知的私钥进行线性回归预测,直到第65题为止。我......
  • Python:如何使用pyaudio或sounddevice等库进行自动录音?
    我想做一个项目,需要满足以下录音要求:程序启动后,会在后台不断检测麦克风的声音,当声音分贝大于一定值时打开录音流级别,当分贝低于一定级别时关闭录音流并保存为wav文件。我知道原理,但我无法使用这些库来实现。我想实现以上结果使用Python实现自动录音以下代......
  • 当我们创建一个在 https 服务器上获取和发送数据的 python 应用程序时,我们应该如何处
    python脚本使用Urllib3,我的服务器是在Node.js上编写的脚本。我担心(并且不清楚)证书:我是否需要将我的python应用程序上的证书另存为变量?例如我这样做了,http=urllib3.PoolManager(cert_reqs="CERT_REQUIRED",ca_certs='client-cert.pem')并且我不知道......
  • 使用 Python 进行 Web 抓取以获取数据 NoneType ERROR
    我正在努力为我的学校项目获取美元和价格。所以我决定为此使用网络抓取,但我有一个问题。当我尝试在服务器上使用我的代码时,它给我NoneType错误。它可以在googlecolab上使用,但我无法在我的电脑或服务器上使用。我该如何解决这个问题?网页抓取代码;defdolar():he......
  • Python 请求 - response.json() 未按预期工作
    我正在尝试从Python的requests模块调用API。在邮递员上,返回的响应标头中的Content-Type是application/json;charset=utf-8,响应json数据是我期望的样子。但是,在python上的API的get方法之后运行response.json()会抛出错误simplejson.errors......
  • Python 中的“样板”代码?
    Google有一个Python教程,他们将样板代码描述为“不幸的”,并提供了以下示例:#!/usr/bin/python#importmodulesusedhere--sysisaverystandardoneimportsys#Gatherourcodeinamain()functiondefmain():print'Hellothere',sys.argv[1]#Command......