Je veux insérer et souligner dans chacun des en-têtes de colonne dans le df ci-dessous, sauf pour la première colonne. Donc Time doit être laissé tel quel et chacune des colonnes suivantes doit être insérée avec un trait de soulignement.

df = pd.DataFrame({        
    'Time' : [1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4],                               
    'X1' : [4,5,8,3,6,2,6,4,3.1,2,4,6,6,2,4,4],
    'Y1' : [-2,0,-2,0,0,4,-1,-2,-2,4,-3,2,-2,0,-2.5,4],     
    'X2' : [4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4],
    'Y2' : [-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2],                          
    })

df.columns = [f'{x[0]}_{x[1]}' for x in df.columns]

   T_i  X_1  Y_1  X_2  Y_2
0    1    4   -2    4   -2
1    1    5    0    4   -2
2    1    8   -2    4   -2
3    1    3    0    4   -2
4    1    6    0    4   -2

Ce qui suit renvoie une erreur.

df.columns[:1] = [f'{x[0]}_{x[1]}' for x in df.columns[:1]]

raise TypeError("Index does not support mutable operations")

TypeError: Index does not support mutable operations

Sortie prévue

   Time  X_1  Y_1  X_2  Y_2
0     1    4   -2    4   -2
1     1    5    0    4   -2
2     1    8   -2    4   -2
3     1    3    0    4   -2
4     1    6    0    4   -2
0
jonboy 17 mars 2021 à 06:43

1 réponse

Meilleure réponse

Travailler avec df.columns[:1]= n'est probablement pas une bonne idée.

Que diriez-vous de faire ça

df.columns = [f'{x[0]}_{x[1]}' if num > 0 else x for num, x in enumerate(df.columns)]

or

df.columns = [f'{x[0]}_{x[1]}' if x != 'Time' else x for x in df.columns]
1
sammy 17 mars 2021 à 04:07