遍历数据框列表并按索引合并它们

时间:2020-10-04 22:56:49

标签: python pandas dataframe

我有982个数据帧的列表,并希望遍历它,以便可以按索引合并它们。我打算将位置[0]的数据帧与位置[1]的数据帧合并,然后将位置[2]的数据帧合并,将数据帧[0]与数据帧[1]之间的合并结果与等等。

我尝试了这个,但是似乎没有用:

aux4 = '/Users/lucasiancsamuels/Desktop/Res. Regional - COVID 19/Bases/Auxílio Emergencial/202004_AuxilioEmergencial.csv'
auxabr = pd.read_csv(aux4,chunksize=50000,encoding='Latin-1',sep=';')

chunk_list = []  

#dividing the dataframe in chunks
for chunks in auxabr:  
    chunks.drop(chunks.columns[[4,5,6,7,8,9,10,11,12]],inplace=True,axis=1)
    chunks.dropna(axis=0,inplace=True)
    agrupado1 = chunks.groupby('CÓDIGO MUNICÍPIO IBGE')
    auxemer1 = agrupado1['VALOR BENEFÍCIO']
    valor1 = auxemer1.agg(np.sum)
    chunks = (chunks.drop_duplicates('CÓDIGO MUNICÍPIO IBGE'))
    chunks.index = chunks['CÓDIGO MUNICÍPIO IBGE']
    chunks.index.astype(dtype=np.int64)
    chunks.sort_index(inplace=True)
    filtered_chunk = pd.concat([chunks,valor1],axis=1)
    chunk_list.append(filtered_chunk)

#merge the dataframes by index - didn't work
for i in range(0,981):    
    filtered_data = pd.merge(left=chunk_list[i],right=chunk_list[i+1],on=chunk_list[i].index)

并返回此错误:

KeyError: Float64Index([1200013.0, 1200054.0, 1200104.0, 1200138.0, 1200179.0,
              1200203.0],
             dtype='float64', name='CÓDIGO MUNICÍPIO IBGE')

1 个答案:

答案 0 :(得分:0)

卢卡斯,我开始写另一条评论,但是为了安慰起见,它来得太久了。

首先,na_values并没有达到您的预期。当您希望熊猫将其他值视为NaN时,可以使用此选项。例如,我可以在电子表格中将-99的值表示为无值,并且在加载csv时,我将指示熊猫使用na_values=-99将其视为NA。

您需要做的是:首先按照常规方式加载csv,然后使用fillna删除NaN值,最后将整个列转换为整数:

auxabr = pd.read_csv(aux4,chunksize=50000,encoding='Latin-1',sep=';')
auxabr['CÓDIGO MUNICÍPIO IBGE'].fillna(0, inplace=True, axis=1)
auxabr = auxabr.astype({'CÓDIGO MUNICÍPIO IBGE':'int'})

那应该在那之后一切正常。