我有一个数据框:
Date Articles
2010-01-04 ((though, reliant, advertis, revenu, internet,...
2010-01-05 ((googl, expect, nexus, one, rival, iphon, hel...
2010-01-06 ((while, googl, introduc, first, piec, hardwar...
2010-01-07 ((googl, form, energi, subsidiari, appli, gove...
2010-01-08 ((david, pogu, review, googl, new, offer, nexu...
2010-01-12 ((the, compani, agre, hand, list, book, scan, ...
日期是索引,文章是元组的元组。
我有另一个数据框:
Date Price
2010-01-08 602.020
2010-01-15 580.000
2010-01-22 550.010
2010-01-29 529.944
日期也是索引,但分为几周。
我的问题是我想在第二个数据框中添加另一列,该列将包含直到该特定星期为止所有由索引指示的文章。就像第二个数据框中的第一行一样,我希望从2010年1月8日之前的第一个数据框中提取所有文章(因此,这将是第一个数据框中的前4个条目)。就像2010年1月15日的明智之举一样,我需要从2010年1月8日到2010年1月14日的所有文章,依此类推。
任何帮助,将不胜感激。谢谢。
最佳答案
我们可以使用IntervalIndex.from_breaks
和pd.cut
df1 = pd.DataFrame({'Articles':
{pd.Timestamp('2010-01-04 00:00:00'): [0, 1],
pd.Timestamp('2010-01-05 00:00:00'): [2, 3],
pd.Timestamp('2010-01-06 00:00:00'): [4, 5],
pd.Timestamp('2010-01-07 00:00:00'): [6, 7],
pd.Timestamp('2010-01-08 00:00:00'): [8, 9],
pd.Timestamp('2010-01-12 00:00:00'): [10, 11]}})
Articles
2010-01-04 [0, 1]
2010-01-05 [2, 3]
2010-01-06 [4, 5]
2010-01-07 [6, 7]
2010-01-08 [8, 9]
2010-01-12 [10, 11]
mybins = pd.IntervalIndex.from_breaks(
pd.date_range("2010-1-1", periods=5, freq="7D"),
closed="left"
)
df1["bin"] = pd.cut(df1.index, bins=mybins)
df1.groupby("bin")["Articles"].sum()
bin
[2010-01-01, 2010-01-08) [0, 1, 2, 3, 4, 5, 6, 7]
[2010-01-08, 2010-01-15) [8, 9, 10, 11]
[2010-01-15, 2010-01-22) None
[2010-01-22, 2010-01-29) None
Name: Articles, dtype: object