我正在尝试使用 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