У меня есть несколько фреймов данных в списке, полученных после использования np.array_split
, и я хочу объединить некоторые из них в один фрейм данных. В этом примере я хочу объединить 3 кадра данных, содержащихся в b (все, кроме второго, который является элементом b[1] в списке):
df = pd.DataFrame({'country':['a','b','c','d'],
'gdp':[1,2,3,4],
'iso':['x','y','z','w']})
a = np.array_split(df,4)
i = 1
b = a[:i]+a[i+1:]
desired_final_df = pd.DataFrame({'country':['a','c','d'],
'gdp':[1,3,4],
'iso':['x','z','w']})
Я попытался создать пустой df, а затем использовать добавление через цикл для элементов в b, но без полного успеха:
CV = pd.DataFrame()
CV = [CV.append[(b[i])] for i in b] #try1
CV = [CV.append(b[i]) for i in b] #try2
CV = pd.DataFrame([CV.append[(b[i])] for i in b]) #try3
for i in b:
CV.append(b) #try4
Я пришел к решению, которое работает, но неэффективно:
CV = pd.DataFrame()
CV = [CV.append(b) for i in b][0]
В этом случае я получаю в CV три раза один и тот же кадр данных со всеми строками, и я просто получаю первую из них. Однако в моем реальном случае, когда у меня есть большие наборы данных, три раза одно и то же приведет к гораздо большему времени вычислений.
Как я мог сделать это без повторения операций?