Besoin d'ajouter deux trames de données en python. La première contient la ligne En-tête et la seconde est Données. Les lignes d'en-tête contiennent deux lignes comme

Col1,Col2,Col3,....
Int,String,String,....

Et les données contiennent plusieurs lignes en tant que données

1,John,Mark,....
2,Kedar,Mac,....

Etc

J'ai essayé d'utiliser le code mentionné ci-dessous mais toujours pas de chance. dfcols est un cadre de données d'en-tête et Dat1 contient toutes les données dans le cadre de données. Les deux trames de données donnent un résultat correct lorsqu'elles sont imprimées séparément. Mais lorsque j'ajoute ces deux blocs de données, l'ordre des colonnes des deuxièmes blocs de données (qui contient des données) devient irrégulier (veuillez noter que les données contiennent également des valeurs numériques).

df1=dfcols.append(Dat1, ignore_index=True,sort=False)
print(df1)

J'ai besoin de la sortie comme

Col1,Col2,Col3,....
Int,String,String,....
1,John,Mark,....
2,Kedar,Mac,....
0
user12175004 4 nov. 2019 à 12:19

3 réponses

Meilleure réponse

Faites quelque chose comme:

df1 = pd.read_csv('your_df1_file.csv', header = 0)
df2 = pd.read_csv('your_df2_file.csv', header = None)
column_headers_df1 = df1.columns.tolist()
df2.columns = column_headers_df1
final_df = pd.concat([df1,df2])
1
Joe 4 nov. 2019 à 09:32

Vous pouvez simplement concaténer vos deux df en un.

df1 = pd.concat([dfcols, Dat1.rename(columns=dfcols.columns)], reset_index=True) 
1
Florian Bernard 4 nov. 2019 à 10:20

Si vous souhaitez créer MultiIndex pour df2 par des valeurs à partir de deux lignes de df1

>>> df2.columns= df1.apply(lambda x: x.tolist(), axis=1).values.tolist()
>>> df2
  Col1   Col2   Col3
   Int String String
0    1   John   Mark
1    2  Kedar    Mac
1
splash58 4 nov. 2019 à 10:32