Как сбросить индекс нескольких фреймов данных pandas с помощью цикла в Python?

#python #pandas

#python #pandas

Вопрос:

Как сбросить индекс нескольких фреймов данных pandas с помощью цикла в Python?

У меня есть 17 фреймов данных в списке, и я хочу сбросить индекс для всех из них с помощью цикла.

Любая помощь?

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

1. в какой структуре у вас есть несколько df eg.in список и т. Д

2. Пожалуйста, покажите нам какой-нибудь код, чтобы мы могли помочь вам достичь того, к чему вы стремитесь

3. Да, мои dfs находятся в списке

Ответ №1:

Это был бы самый простой способ, имо:

 #This list contains the names of all of your dataframes
list_dataframes = [foo1, foo2, foo3, ..... , foo17]

for dataframe in list_dataframes:
    dataframe.reset_index(inplace=True)
  

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

1. Это не изменит фреймы данных в list_dataframes, потому что reset_index это не операция на месте.

2. Не могу понять, почему, если я использую df = df.reset_index() вместо dataframe.reset_index(inplace=True) , это не сработает…

Ответ №2:

Вы должны помнить, что reset_index не является встроенной операцией, и вам нужно переназначить или использовать inplace параметр.

 df1 = pd.DataFrame(index=np.arange(1,10))
df2 = pd.DataFrame(index=pd.date_range('2019-01-1', periods=10))
df3 = pd.DataFrame(index=[*'ABCDEFGHIJ'])

lofdfs = [df1, df2, df3]
for df in lofdfs:
    df.reset_index(inplace=True)
  

Или используйте понимание списка:

 [df.reset_index(inplace=True) for df in lofdfs]
  

Ответ №3:

В документации Pandas говорится:

reset_index: сбросьте индекс фрейма данных и используйте вместо него индекс по умолчанию. Если фрейм данных имеет мультииндекс, этот метод может удалить один или несколько уровней.

Это полезно, когда у вас сложный фрейм данных, но если у вас есть отдельные фреймы данных, вы можете сделать следующее:

 for df in dataframes:
    df.reset_index(inplace=True)
  

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

1. Это не изменит df в фреймах данных, потому что reset_index это не операция на месте.