#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
это не операция на месте.