#python #pandas #dataframe
Вопрос:
Прежде всего, извините, если на этот вопрос уже дан ответ, я искал ответ, но не нашел способа решить свою проблему, и спасибо вам за вашу удивительную поддержку. Я изучаю Python, и вся информация, которую я нашел здесь, очень полезна.
#Define a function to import data
def import_data():
data = pd.read_csv('Sales_Transactions_Dataset_Weekly.csv',sep=';',index_col=0,header=0)
df=data.iloc[:,0:52]
return df
У меня есть файл .csv с временными рядами в столбцах (w1,w2,w3…), и я хочу сохранить только первые 52 столбца в своем фрейме данных. Для этого я выполнил эту функцию:
После этого я не могу распечатать свой фрейм данных, я хотел бы использовать его в другой функции, которую я создал. но я всегда получаю одну и ту же ошибку:
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-159-e6cb9dbb3286> in <module>
1 import_data()
----> 2 print(df)
NameError: name 'df' is not defined
Ответ №1:
Вам просто нужно установить df
df = import_data()
Комментарии:
1. Спасибо!! Я забыл назначить его df.
Ответ №2:
Ваш подход хорош, но проблема в том, что ваша функция возвращает фрейм данных, который вы не сохраняете в переменной после вызова функции. узнайте больше о возврате функций в Python
Поэтому, когда вы попытались отобразить фрейм данных с помощью переменной df
(которая является локальной для функции import_data()
), вы получаете ошибку » df » не определен, что означает, что он не может найти переменную с именем df в текущей области. Прочтите эту ссылку, чтобы узнать больше о области видимости в Python
Чтобы устранить эту проблему, просто сделайте это
df=import_data()
#import_data will return a dataframe which will be saved in df variable and then you can use this "df" variable to display your data
df
Комментарии:
1. Спасибо! Я понял, в чем была моя ошибка. Я должен назначить переменную.
2. нет проблем, пожалуйста, озвучьте ответ, так как это помогает другим знать, что он был правильным, и помогает новым аккаунтам расти Спасибо