У меня есть несколько фреймов данных (с одинаковыми # столбцами, но разными именами). Я пытаюсь создать один фрейм данных со строками, расположенными друг под другом. Меня не волнуют названия столбцов (я всегда могу переименовать их позже). Я видел разные ссылки SO, но они не решают эту проблему полностью.
Примечание. У меня 21 кадр данных, и его масштабируемость важна. Я смотрел на это
Как я могу получить df:
df = [] for f in files: data = pd.read_csv(f, usecols = [0,1,2,3,4]) df.append(data)
Предполагая, что ваши DataFrames хранятся в некотором списке df_l:
df_l
Переименуйте столбцы и введите:
df_l = [df1, df2, df3] for df in df_l: df.columns = df_l[0].columns # Just chose any DataFrame pd.concat(df_l) # Columns named with above DataFrame # Index is preserved
Или создайте новый DataFrame:
pd.DataFrame(np.vstack([df.to_numpy() for df in df_l])) # Columns are RangeIndex # Index is RangeIndex
Я сделаю это в начале, добавив skiprows=1
skiprows=1
names=[0,1,2,3,4]# what every you want to call them .. pd.concat([pd.read_csv(f, usecols = [0,1,2,3,4],skiprows=1,names=[0,1,2,3,4]) for f in files])
Как только вы поместите все фреймы данных в список, попробуйте этот код.
import pandas as pd df = [df1, df2, df3] result = pd.DataFrame(columns=df1.columns) for df in df: result = pd.concat([result,df.rename(columns=df1.columns)], ignore_index=True)