如何在 Python 中使用 Pandas 按列分组
Posted
技术标签:
【中文标题】如何在 Python 中使用 Pandas 按列分组【英文标题】:How to group by a column with Pandas in Python 【发布时间】:2021-12-16 08:17:08 【问题描述】:提前感谢您的反馈!我正在处理时间序列数据,它有 2 列索引转换为 DateTime 对象。我正在处理的内容如下所示:
我正在尝试解析每个商店的销售记录,以便我可以自定义每个商店的销售预测。有什么建议吗?
非常感谢!
【问题讨论】:
你试过搜索功能了吗? 你想做什么?只是按商店过滤掉? 最后,我想对所有商店进行销售预测。大约有 1000 家商店,我使用的销售历史是从 2013 年至今 【参考方案1】:您可以通过'Store'
列查询/切片数据框,或者执行.groupby('Store')
.,或者将索引设置为['Store', 'Fiscal_Date']
。目前还不清楚你想做什么。也许这有帮助?
import pandas as pd
df = pd.DataFrame('Fiscal_Date':['2013-12-01','2013-12-01','2013-12-02','2013-12-02'],
'Store':['A','B','A','B'],
'Sale':[12,143,23,21])
df = df.set_index(['Fiscal_Date']).sort_index()
store_tables =
for store in list(df['Store'].unique()):
filter_df = df[df['Store'] == store]
store_tables[store] = filter_df.drop('Store',axis=1)
输出:
要获取特定的Store表,只需以商店名称为键调用即可:
print(store_tables['A'])
Sale
Fiscal_Date
2013-12-01 12
2013-12-02 23
或存储“B”:
print(store_tables['B'])
Sale
Fiscal_Date
2013-12-01 143
2013-12-02 21
【讨论】:
据我所知,时间序列数据必须使用日期时间和一列进行索引(在这种情况下,该列将是销售)。但是因为我有商店、销售额(2 列),所以我无法预测销售额。那是我想到按每个商店分组以使用 Datetime 索引的单独销售列 啊,是的。那么我的解决方案应该对你有用,因为你可以删除 store 列。只要确保跟踪哪个表是哪个表。事实上,我只是更新了代码,所以你可以这样做【参考方案2】:df = 数据框的名称
要获取特定商店的销售价值:
df["Sale"].loc[(df["Store"] == "StoreName")]
【讨论】:
这不起作用,因为'SeriesGroupBy'对象没有属性'loc' 您要求按商店销售 我相信这段代码应该是df.loc[(df["Store"] == "StoreName"), "Sale"]
。 .loc
方法采用 2 个参数,例如。 df.loc["row identifier", "column identifier"]
.
@j__carlson 要销售的标识符列在代码 df["Sale"] 的第一部分中
@LukeSimpson,我的立场是正确的。这将按预期运行,但没有必要使用.loc
来屏蔽series
。以上是关于如何在 Python 中使用 Pandas 按列分组的主要内容,如果未能解决你的问题,请参考以下文章
python Pandas - 按列对DataFrame排序