gpt4 book ai didi

python - 使用 Pandas Groupby 和 date_range 进行时间序列分析时出错

转载 作者:太空宇宙 更新时间:2023-11-04 05:40:29 24 4
gpt4 key购买 nike

我有一个类似于下面的 Pandas DataFrame,我试图将 DataFrame 分成一周​​长的 block ,并在每个 block 上运行一个函数。我相信这应该可以通过 groupbydate_range 函数来完成,但我遇到了一些麻烦。

我见过其他人使用日期作为索引来做类似的事情。但是,这在这种情况下不起作用,因为 df 中的多行可能具有相同的日期。此外,每个日期都没有在 df 中表示。

groupby 和/或date_range 函数我做错了什么?

弄清楚这一点后,我想使用 nx.from_pandas_dataframe 为每周长的 block 创建一个网络,并计算每个 block 中的节点数。

# create list of edges with 'source', 'target', 'timestamp'
edges = [('e', 'a1', '12/02/2015'),
('e', 'a2', '12/02/2015'),
('e', 'a3', '12/03/2015'),
('e', 'a4', '12/04/2015'),
('e', 'a5', '12/04/2015'),
('e', 'a1', '12/08/2015'),
('e', 'a2', '12/09/2015'),
('e', 'a6', '12/09/2015'),
('e', 'a7', '12/13/2015'),
('e', 'a1', '12/15/2015'),
('e', 'a6', '12/16/2015'),
('e', 'a8', '12/17/2015'),
('e', 'a9', '12/18/2015')]

# create a DataFrame from edges
df = pd.DataFrame(edges, columns=['source', 'target', 'date'], )

# sort df by date and identify first and last date
df.sort(columns=['date'], ascending=True, inplace=True)
first_date = df.date.irow(0)
last_date = df.date.irow(-1)

df.groupby(pd.date_range(start=first_date, end=last_date, freq='W'))
AssertionError: Grouper and axis must be same length

最佳答案

可能有更好的解决方案,但这里有一个解决方案。我创建了一个数据框字典,其中包含年/周元组对。

首先,我在年/周元组对的数据框中创建一个列。然后我使用字典推导式对此列进行分组。

df['year_week'] = [(d.year, d.week) for d in df['date']]

weekly_groups = {w: g for w, g in df.groupby('year_week')}
>>> weekly_groups
{(2015, 49): source target date year_week
0 e a1 2015-12-02 (2015, 49)
1 e a2 2015-12-02 (2015, 49)
2 e a3 2015-12-03 (2015, 49)
3 e a4 2015-12-04 (2015, 49)
4 e a5 2015-12-04 (2015, 49),
(2015, 50): source target date year_week
5 e a1 2015-12-08 (2015, 50)
6 e a2 2015-12-09 (2015, 50)
7 e a6 2015-12-09 (2015, 50)
8 e a7 2015-12-13 (2015, 50),
(2015, 51): source target date year_week
9 e a1 2015-12-15 (2015, 51)
10 e a6 2015-12-16 (2015, 51)
11 e a8 2015-12-17 (2015, 51)
12 e a9 2015-12-18 (2015, 51)}

关于python - 使用 Pandas Groupby 和 date_range 进行时间序列分析时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34111713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com