Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 反复浏览熊猫的列表DF';然后迭代每个DF';s排_Python_Pandas_Nltk - Fatal编程技术网

Python 反复浏览熊猫的列表DF';然后迭代每个DF';s排

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

这可能是一个有点疯狂的问题。。。 我有一个单独的文章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_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年的组?然后使用-try
df[df.Date.dt.year==2008]
属性错误:无法访问“SeriesGroupBy”对象的属性“dt”,请尝试使用“apply”方法。
看起来您需要
重置索引
-
打印(df.groupby(df['Date'].dt.year).应用(f).重置索引())