循环遍历数据帧列表并按索引合并它们

2024-09-28 21:46:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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')

Tags: 数据intrueindexchunksfilteredlistpd
1条回答
网友
1楼 · 发布于 2024-09-28 21:46:12

卢卡斯,我开始写另一条评论,但时间太长了

首先,na_values没有做你认为它做的事情。当您有其他要视为NaN的值时,将使用此选项。例如,我可以在我的电子表格中有-99个值,表示没有值,当我加载csv时,我会指示pandas使用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'})

之后一切都会好起来的

相关问题 更多 >