我有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')
答案 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'})
那应该在那之后一切正常。