0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 87

Как добавить глобальную переменную в pandas

14.12.2022, 14:06. Показов 1176. Ответов 11

Студворк — интернет-сервис помощи студентам
Добрый день.
Есть глобальная переменная

Python
1
2
3
def reg_order_number(message):
    global order_number
    order_number = message.text

Если вставляю глобальную переменную в pandas

Python
1
2
df.loc[df['Артикул_'].values == [B]Глобальная переменная[/B], cols].to_excel('P:/Program Files/test/test10.xlsx',
                                                                     index=False)
То выходит ошибка:

local variable 'order_number' referenced before assignment
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.12.2022, 14:06
Ответы с готовыми решениями:

Как добавить глобальную переменную которая будет действовать на каждой форме?
Заголовок говорит сам за себя. Помогите пожалуйста.

Как объявить глобальную переменную?
Угораздило установить Офис2003... :-/ неужели нельзя больше использовать необъявленные переменные?!? и самое главное: Как...

Как сохранить глобальную переменную?
Здраствуйте! При написании кода в tkinter возникла необходимость визуализировать значения. Но при попытке построить график появлялись...

11
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,695
Записей в блоге: 29
14.12.2022, 14:19
Cemxo3, а чего ж ошибку то не прочитал и не перевел? к моменту выполнения кода (который надо кстати вставить целиком) переменная не объявлена глобальной и внутри функции не известна.
0
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 87
14.12.2022, 14:36  [ТС]
Объявил через global и всё равно Питон не может меня понять, чего я от него хочу(

Добавлено через 12 минут
Если так написать, то работает.

Python
1
2
3
4
def reg_order_number():
    global order_number
    order_number = '41254810'
reg_order_number()
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,695
Записей в блоге: 29
14.12.2022, 15:10
Цитата Сообщение от Cemxo3 Посмотреть сообщение
Объявил через global
не верно или не там, давай весь код и всю ошибку, экстрасенсов не существует. Ошибка говорит о том что там где ты использовал переменную -о ее существовании в глобальном скоупе не известно, например ты не вызвал к тому моменту еще функцию reg_order_number
0
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 87
14.12.2022, 15:17  [ТС]
Это телеграмм бот, если отправлю код, то всё ли будет понятно?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,695
Записей в блоге: 29
14.12.2022, 15:20
Cemxo3, перефразирую. ДО той строки где упала ошибка была ли УЖЕ выполнена функция reg_order_number?
0
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 87
14.12.2022, 15:35  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton("Узнать статус заказа")
    markup.add(item1)
    bot.send_message(message.chat.id, 'Выбери тему вопроса  ������'.format(message.from_user),reply_markup=markup)
 
 
@bot.message_handler(content_types=['text'])
def test(message):
        if message.text == 'Узнать статус заказа':
        bot.send_message(message.from_user.id, "Узнать статус заказа?")
        bot.register_next_step_handler(message, reg_order_number)   #из телеги ввожу номер 41254810
        
            
 
 
def reg_order_number(message):
    global order_number
    order_number = message.text
    keyboard = types.InlineKeyboardMarkup()
    key_yes = types.InlineKeyboardButton(text='Да������', callback_data='yes')
    keyboard.add(key_yes)
    key_no = types.InlineKeyboardButton(text='Нет������', callback_data='no')
    keyboard.add(key_no)
    question = 'Номер заказа указан верно??'
    bot.send_message(message.chat.id, text=question, reply_markup=keyboard)
 
@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
    if call.data == 'yes':
        
        df =pd.read_excel ('P:/Program Files/test/test10.xlsx')
 
        cols = list(df.columns)
 
        df['Артикул'] = df['Артикул'].map(lambda x: str(x))
        df['Количество'] = df['Количество'].map(lambda x: str(x))
        # цена df['Цена'] = df['Цена'].map(lambda x: str(x))
 
        df.loc[:, 'Артикул_'] = np.where(df.loc[:, 'Номенклатура'].str.startswith('Реализация'), df.loc[:, 'Артикул'],
                                         np.nan)
        df.loc[:, 'Артикул_'].ffill(inplace=True)
 
        df = df[df['Артикул'].values != df['Артикул_'].values].reset_index(drop=True)
 
        print(sorted(set(df['Артикул_'].to_list()),
                     key=lambda x: (len(x), x)))  # Все уникальные артикулы при "Реализация товаров и услуг...".
 
        
        
 
        df.loc[df['Артикул_'].values == [B]order_number,[/B] cols].to_excel('P:/Program Files/test/test11.xlsx',
                                                                     index=False)
      
 
        total = df.loc[df['Артикул_'].values == [B]order_number,[/B] cols].values.tolist()
        bot.send_message(call.message.chat.id, f'№ : {total} ')
Добавлено через 9 минут
Может быть pandas просто не понимает глабальные переменные?
Потому что у меня есть другой проект, который такой же, только без pandas и там глобальная переменная видна в @bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
0
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 87
14.12.2022, 15:41  [ТС]
[ATTACH][ATTACH][/ATTACH][/ATTACH]
Миниатюры
Как добавить глобальную переменную в pandas   Как добавить глобальную переменную в pandas  
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,695
Записей в блоге: 29
14.12.2022, 15:53
Цитата Сообщение от Cemxo3 Посмотреть сообщение
Может быть pandas просто не понимает глабальные переменные?


может просто прочтешь что я тебя спросил?
Цитата Сообщение от Welemir1 Посмотреть сообщение
ДО той строки где упала ошибка была ли УЖЕ выполнена функция reg_order_number?
0
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 87
14.12.2022, 16:01  [ТС]
А как мне это проверить?
Я отправил скриншот, была выполнена, туда пришёл номер заказа.

Добавлено через 5 минут
df.loc[df['Артикул_'].values == order_number, cols].to_excel('P:/Program Files/Napolke/d24/test10.xlsx',
index=False)
Вот тут падает ошибка.

До этого глобальная переменная отработала и в ней уже номер заказа.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,695
Записей в блоге: 29
14.12.2022, 16:37
Cemxo3, если отработала то в чем тогда ошибка?
весь текст ошибки приложи, все из тебя клещами надо тянуть
0
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 87
14.12.2022, 17:30  [ТС]
Вопрос решён, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.12.2022, 17:30
Помогаю со студенческими работами здесь

Как объявить глобальную переменную
Всем доброго дня. У меня такая проблема. Есть форма form1 в ней есть несколько обработчиков событий кнопок. Необходимо объявить переменную...

Как объявить глобальную переменную?
подскажите люди добрые, как объявить(а точнее где?) в form2 (которая вызывается из form1) глобальную переменную, ну или структуру,например...

Как объявить глобальную переменную
Вот код /* * Created by SharpDevelop. * User: admin * Date: 30.06.2014 * Time: 18:36 * * To change this template...

Как объявить глобальную переменную?
смотрите у меня есть одна не большая проблема с локальными переменными, а точнее проблема в том что они локальные а мне нужны глобальные не...

Как объявить глобальную переменную?
Как объявить глобальную переменную?у меня 16 блоков и нужно чтобы она была доступна всем блокам Добавлено через 12 минут В С#.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru