Python 反复浏览熊猫的列表DF';然后迭代每个DF';s排
这可能是一个有点疯狂的问题。。。 我有一个单独的文章DF,然后我将其分为多个DF,因此每个DF只包含特定年份的文章。然后我将这些变量放入一个名为Python 反复浏览熊猫的列表DF';然后迭代每个DF';s排,python,pandas,nltk,Python,Pandas,Nltk,这可能是一个有点疯狂的问题。。。 我有一个单独的文章DF,然后我将其分为多个DF,因此每个DF只包含特定年份的文章。然后我将这些变量放入一个名为box\u of_years的列表中 indexed_df = article_db.set_index('date') indexed_df = indexed_df.sort_index() year_2004 = indexed_df.truncate(before='2004-01-01', after='2004-12-31') year_2
box\u of_years
的列表中
indexed_df = article_db.set_index('date')
indexed_df = indexed_df.sort_index()
year_2004 = indexed_df.truncate(before='2004-01-01', after='2004-12-31')
year_2005 = indexed_df.truncate(before='2005-01-01', after='2005-12-31')
year_2006 = indexed_df.truncate(before='2006-01-01', after='2006-12-31')
year_2007 = indexed_df.truncate(before='2007-01-01', after='2007-12-31')
year_2008 = indexed_df.truncate(before='2008-01-01', after='2008-12-31')
year_2009 = indexed_df.truncate(before='2009-01-01', after='2009-12-31')
year_2010 = indexed_df.truncate(before='2010-01-01', after='2010-12-31')
year_2011 = indexed_df.truncate(before='2011-01-01', after='2011-12-31')
year_2012 = indexed_df.truncate(before='2012-01-01', after='2012-12-31')
year_2013 = indexed_df.truncate(before='2013-01-01', after='2013-12-31')
year_2014 = indexed_df.truncate(before='2014-01-01', after='2014-12-31')
year_2015 = indexed_df.truncate(before='2015-01-01', after='2015-12-31')
year_2016 = indexed_df.truncate(before='2016-01-01', after='2016-12-31')
box_of_years = [year_2004, year_2005, year_2006, year_2007,
year_2008, year_2009, year_2010, year_2011,
year_2012, year_2013, year_2014, year_2015,
year_2016]
我编写了各种函数来标记、清理标记,并将其转换为FreqDist
对象,然后将它们打包成一个名为year\u prep()
的函数。当我这样做的时候,这个很好用
year_2006 = year_prep(year_2006)
…但是有没有一种方法可以迭代每个年份变量,应用函数并让它转换相同的变量,而不是每年重复上述操作
我知道重复自己是最简单的方法,但不一定是最干净的。我可能会将这一点向后推,然后再进行切片,但在这一点上,我感觉列表的层次将无法控制,因为我将从一个年份列表转到一个年份列表,包含一个文章列表,包含文章中每个单词的列表。我认为您可以使用by和自定义函数:
import pandas as pd
start = pd.to_datetime('2004-02-24')
rng = pd.date_range(start, periods=30, freq='50D')
df = pd.DataFrame({'Date': rng, 'a':range(30)})
#print (df)
def f(x):
print (x)
#return year_prep(x)
#some custom output
return x.a + x.Date.dt.month
print (df.groupby(df['Date'].dt.year).apply(f))
所以我使用了这个
def(x):print(x)
grouped=df.groupby(df['date'].dt.year)
grouped['clean_text'])。apply(f)
成功了,在分组列表中打印出了'clean_text'列的内容,所以理论上看起来不错。现在我只需要知道如何调用特定的组,例如,如果我想绘制2008年的频率计数结果。因此,基本上现在我有了分组数据库,如何指向2008年的组?然后使用-trydf[df.Date.dt.year==2008]
属性错误:无法访问“SeriesGroupBy”对象的属性“dt”,请尝试使用“apply”方法。
看起来您需要重置索引
-打印(df.groupby(df['Date'].dt.year).应用(f).重置索引())