Порядок столбцов изменился после использования добавления при использовании фрейма данных pandas

#python #pandas

Вопрос:

Я использую этот код для добавления строк в csv в новый фрейм данных.

 import pandas as pd
from keybert import KeyBERT

df_info = pd.read_csv(r'./old.csv', encoding='utf-8')
df_re = pd.DataFrame()
for index,row in df_info.iterrows():
    doc = row['info']
    model = KeyBERT('distilbert-base-nli-mean-tokens')
    a = model.extract_keywords(doc, keyphrase_ngram_range=(1, 1))
    row['result'] = a
    df_re = df_re.append(row)
df_re.to_csv(r'./new.csv', index=False, mode='w', header=True, encoding='utf-8-sig')
 

Порядок столбцов в old.csv D, info, B, A, C этом .

Но когда я использую df_re = df_re.append(row) , порядок столбцов df_re(new.csv) становится A, B, C, D, info,result ,я не хочу изменять порядок исходных столбцов. Я просто хочу добавить столбец result к последнему столбцу исходного столбца csv.

Мне просто нужно D, info, B, A, C,result войти new.csv .

Что мне делать?

Ответ №1:

При инициализации df_re это пустой фрейм данных без строки и столбца, поэтому вам не следует ожидать какого-либо порядка. Вместо этого вы можете явно указать столбцы во время инициализации:

 df_re = pd.DataFrame(columns=df_info.columns   ['result'])
 

Комментарии:

1. Я воспользовался твоим методом, но случилось кое-что странное. Заголовок становится таким, Dresult, inforesult, Bresult, Aresult, Cresult,A,B,C,D,info