Saya memiliki 5 kerangka data yang disebut control1, control2, control3, control4, control5. Saya mengganti nama kolom mereka. Tetapi saya ingin mengganti nama kolom bernama 10 (nama bilangan bulat) dengan elemen-elemen dalam file untuk masing-masing. Sesuatu seperti ini:

    control1.rename(columns={10:'02042020.txt'}, inplace=True)
    control2.rename(columns={10:'05032020.txt'}, inplace=True)
    #...... etc etc 

Ini kode saya:

        lista_controles=[control1,control2,control3,control4,control5]
        files=['02042020.txt','05032020.txt','12032020.txt','19032020.txt','26032020.txt']
        for df in lista_controles:
            df.rename(columns={2:'NOMBRE_ESTACION'}, inplace=True)
            for i in files 
               df.rename(columns={10:f'{i}'}, inplace=True)

Tetapi hanya mengganti nama dengan elemen pertama dari daftar (02042020.txt). Bagaimana saya bisa memecahkan masalah ini? Terima kasih..

0
Javier 1 Juni 2020, 22:19

1 menjawab

Jawaban Terbaik

Ini karena saat df.rename(columns={10:f'{i}'}, inplace=True) pertama kali dijalankan, nama "10" berubah menjadi "02042020.txt". Pada iterasi kedua, tidak ada lagi kolom bernama "10", jadi tidak apa-apa, karena baru saja diubah menjadi "02042020.txt".

Kamu bisa mencoba:

for i, df in enumerate(lista_controles):
    df.rename(columns={2:'NOMBRE_ESTACION'}, inplace=True)
    df.rename(columns={10:files[i]}, inplace=True)

Untuk membuatnya bekerja, pastikan Anda memiliki jumlah elemen yang sama di lista_controles dan files. Jika tidak ada, ada cara lain untuk melakukannya.

1
emremrah 1 Juni 2020, 19:24