Я пытаюсь создать новый фрейм данных с результатами счетчика из многих фреймов данных (годовые данные)
Я могу создать фрейм данных для результатов счетчика со следующим
df2014 = Counter(all_2014['outTrang']) # create variable for counter
df2014 = pd.DataFrame.from_dict(df2014,orient = 'index').T # convert the variable into a df and transpose
df2014['Year'] = [2014] # add year to the dataframe
df2014 = df2014.rename(columns = {'index':'F', 0:'T'}) # rename the column names of the data frame
df2015 = Counter(all_2015['outTrang'])
df2015 = pd.DataFrame.from_dict(df2015,orient = 'index').T
df2015['Year'] = [2015]
df2015 = df2015.rename(columns = {'index':'F', 0:'T'})
df2016 = Counter(all_2016['outTrang'])
df2016 = pd.DataFrame.from_dict(df2016,orient = 'index').T
df2016['Year'] = [2016]
df2016 = df2016.rename(columns = {'index':'F', 0:'T'})
df2017 = Counter(all_2017['outTrang'])
df2017 = pd.DataFrame.from_dict(df2017,orient = 'index').T
df2017['Year'] = [2017]
df2017 = df2017.rename(columns = {'index':'F', 0:'T'})
df2018 = Counter(all_2018['outTrang'])
df2018 = pd.DataFrame.from_dict(df2018,orient = 'index').T
df2018['Year'] = [2018]
df2018 = df2018.rename(columns = {'index':'F', 0:'T'})
dfAllYears = pd.concat([df2014,df2015,df2016,df2017,df2018],axis = 0, ignore_index = True) # combine all years to one dataframe
dfAllYears = dfAllYears[['year','T','F']] # reorder the columns for the data frame
но это кажется длинным и очень ручным.Я пытался создать цикл for, но он не работает
allyears = {'year':[2014,2015,2016,2017,2018],'df':[all_2014,all_2015,all_2016,all_2017,all_2018]}
allYearFrame = pd.DataFrame(allyears)
Topframe = pd.DataFrame()
for y in allYearFrame.df:
#global Topframe
tempyear = Counter(allYearFrame['df']['outTrang'])
tempframe = pd.DataFrame.from_dict(tempyear, orient = 'index').T
tempframe['year'] = allYearFrame.loc[y.index,'year']
tempframe = tempframe.rename(columns = {'index':'F', 0:'T'})
Topframe = pd.concat([tempframe,Topframe],axis = 0, ignore_index = True)
Конечно, должен быть способ сделать это с меньшим количеством строк кода