Так тоже можно решить проблему, я бы вместо вашей функции использовал очень короткий код new_df = df['Tuples'].apply(pd.Series)
Это создаст новый фрейм где ключи словарей станут, новыми столбцами с соответствующими значениями, но потом все равно нужно будет через акссесор str избавляться от листов в одном из столбцов.
kan3k1k3n, дам вам маленький совет, если работаете с парсиногом то обязательно освойте конструкцию try except, потому что исключения которые нужно ловить в парсинге будут всегда. И подобные проблемы будут преследовать.
это не для данного случая а для любого когда вы указываете вес. Вы не указываете процент вы указываете частоту. Да, в данном случае 80 означает шанс в 80% но это необязательно вместо weights = [1,3,7,9,80] вы можете задать любой weights (линейно трансформированный). Интерпретируется просто:
Например 10 * weights это точно такая же дистрибуция как weights (то есть) если каждый елемент оригинального weights умножить на 10 то например шансы появление 5 точно ТАКЖЕ 80%. Потому что относительное количество останется таким же убедитесь сами:
weights * 10 = [10,30,70,90,800], далее 800 / 1000 = 0.8 = 80%.
А теперь обобщим линейную трансформацию.
a * weights + b эквивалентно weights. то есть относительная частота появления элементов останется прежней. По этому weights не обязаны суммироваться в 100.
o5a, Подскажите где я перемудрил? веса не обязаны суммироваться в сто, это вероятности обязаны суммироваться в 1 в случае дискретной переменной (наш случай).
Roman Kitaev,
Спасибо (вы абсолютно правы), надо было мне сначала проснуться а потом ответ писать. По запарке наоборот разделил, уже отредактировал (Сейчас оригинал моего ответа верен перепроверил каждое слово). Еще раз большое спасибо.
new_df = df['Tuples'].apply(pd.Series)
Это создаст новый фрейм где ключи словарей станут, новыми столбцами с соответствующими значениями, но потом все равно нужно будет через акссесор str избавляться от листов в одном из столбцов.