import pandas as pd
data = {
'1': ['L', 'M', 'L', 'O', 'M'],
'2': ['M', 'O', 'M', None, 'O'],
'3': ['O', None, 'O', None, None]}
df = pd.DataFrame.from_dict(data)
print('original:\n', df)
column_letter_map = {'1': 'L', '2': 'M', '3': 'O'} # соответствие между названием столбца и буквой
new_data = list()
# перебираем все содержимое словаря
for column, letter in column_letter_map.items():
new_data.append(
(df == letter).any(axis=1) # ищем буквы
.replace({True: letter, False: None}) # если нашли, то меняем на саму эту букву
)
new_data[-1].name = column
new_df = pd.concat(new_data, axis=1)
print('\nmodified:\n', new_df)
import random
import numba as nb
import numpy as np
def bubble1(array):
len_ = len(array)
for i in range(len_):
for j in range(len_ - i - 1):
if array[j] > array[j + 1]:
temp = array[j]
array[j] = array[j + 1]
array[j + 1] = temp
@nb.njit(parallel=True)
def bubble2(array):
len_ = len(array)
for i in nb.prange(len_):
for j in nb.prange(len_ - i - 1):
if array[j] > array[j+1]:
array[j], array[j + 1] = array[j + 1], array[j]
if __name__ == '__main__':
arr1 = random.choices(range(1000), k=1000)
arr2 = np.array(arr1)
bubble1(arr1)
bubble2(arr2)
"""
%timeit bubble1(arr1)
46.1 ms ± 71.5 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit bubble2(arr2)
82.4 µs ± 678 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
"""
Не получается разместить виджеты в фрейм
f1
- это результат вызова метода pack()
, который НЕ возвращает ссылку на фрэйм, а возвращает None
. Это базовый синтаксис питона, переменной присваивается результат вызова функции.Не могу задать высоту и ширину фрейма
.grid(...)
- больше строк кода, но более гибкий и контролируемый результат. Грид - это сетка, у нее есть параметр минимального размера строки/столбца.import *
- это плохо. import src.mist_loader
. Кроме того каждый новый запуск кода в пайчарме - это по дефолту новый чистый запуск интерпретатора.btn = ttk.Button(Button-1, lambda x=1, y=2: func(x, y))
in
? Что-то явно лишнее - либо оператор, либо один из циклов. А то проверяется наличие строки в строке, а не в наборе строк.# хотим отобрать фильмы с такими жанрами - хотя бы одним, но не обязательно всеми сразу
genres_to_look_for = ['Drama', 'Crime']
# вот набор фильмов и их жанров
movies_and_genres = {
1: ['Drama', 'Action', 'Crime', 'Thriller'],
2: ['Drama'],
3: ['Drama'],
4: ['Comedy']}
# для каждого фильма проверяем наличие у него искомых жанров (хотя бы одного)
# если any заменить на all, то будет проверяться одновременное наличие всех искомых жанров
movies_filtered = {
movie: any((genre in genres) for genre in genres_to_look_for)
for movie, genres in movies_and_genres.items()
}
print(movies_filtered)
{1: True, 2: True, 3: True, 4: False}
- прямо то, что надо, согласно моему пониманию задачи - в первых трех есть жанр drama, последний в пролете. А если использовать all
, то получится {1: True, 2: False, 3: False, 4: False}
. convert_float
- в pandas тип одинаков для всех значений в столбце - в столбце есть значение, которое нельзя преобразовать в int. Чаще всего такое бывает, когда в столбце пропущено значение, т.к. пустое значение - это нампаевский NaN типа float.parse_dates
- передается список номеров или названий столбцов, которые необходимо распарсить в дату - отдельные столбцы или группы столбцов, если дата распределена по нескольким.date_parser
- дефолтный парсер нормально работает, хотя и сильно увеличивает время загрузки данных. Имеет смысл парсить даты отдельно после загрузки, если объем большой. lambda c: c.data == food
lambda c, food=food: c.data == food
from typing import List
def f_1(lst: List) -> None:
funcs = list()
for val in lst:
funcs.append(lambda: val)
# цикл закончился, val имеет значение последнего элемента из списка
for func in funcs:
print(func())
def f_2(lst: List) -> None:
funcs = list()
for val in lst:
funcs.append(lambda val=val: val)
for func in funcs:
print(func())
if __name__ == '__main__':
data = ['apple', 'tomato', 'potato']
print("\nf_1:")
f_1(data)
print("\nf_2:")
f_2(data)
Понадобилось сделать аппроксимацию полиномом m-й степени...
Подозреваю ограничение точности double...
В чём может быть проблема?
будет использоваться для Photoshop, CorelDRAW, ...