Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 09.10.2019
Сообщений: 87

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

14.12.2022, 14:06. Показов 1154. Ответов 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
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 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
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 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
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 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
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 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
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru