Это может быть простой вопрос, но я не могу понять, как это сделать. Допустим, у меня есть две переменные следующим образом.
a = 2
b = 3
Я хочу построить DataFrame из этого:
df2 = pd.DataFrame({'A':a,'B':b})
Это приводит к ошибке:
ValueError: Если используются все скалярные значения, вы должны передать индекс
Я попробовал это также:
df2 = (pd.DataFrame({'a':a,'b':b})).reset_index()
Это дает то же сообщение об ошибке.
index=0
, но это может привести к случайному неправильному использованию (думая, что один словарь может каким-то образом создать многострочный фрейм данных)Вы также можете использовать,
pd.DataFrame.from_records
что более удобно, когда у вас уже есть словарь:Вы также можете установить индекс, если хотите, следующим образом:
источник
Вы должны сначала создать серию панд. Второй шаг - преобразование серии панд в фрейм данных панд.
Вы даже можете указать имя столбца.
источник
pd.Series(data).to_frame('ColumnName')
короче, хотя этот эквивалент, возможно, более прямой:pd.DataFrame.from_dict(data, orient='index', columns=['ColumnName'])
Вы можете попробовать обернуть свой словарь в список
my_dict = {'A':1,'B':2}
pd.DataFrame([my_dict])
источник
Возможно, Series предоставит вам все необходимые функции:
DataFrame можно рассматривать как коллекцию Series, поэтому вы можете:
Объединить несколько серий в один фрейм данных (как описано здесь )
Добавьте переменную Series в существующий фрейм данных ( пример здесь )
источник
Вам необходимо предоставить итерации в качестве значений для столбцов Pandas DataFrame:
источник
У меня была такая же проблема с массивами numpy, и решение состоит в том, чтобы сгладить их:
источник
Если вы намереваетесь преобразовать словарь скаляров, вы должны включить индекс:
Хотя индекс не требуется для словаря списков, эту же идею можно расширить до словаря списков:
Конечно, для словаря списков вы можете построить фрейм данных без индекса:
источник
Вы можете попробовать:
Из документации по аргументу 'orient': если ключи переданного dict должны быть столбцами результирующего DataFrame, передайте 'columns' (по умолчанию). В противном случае, если ключи должны быть строками, передайте «index».
источник
code
очень важные слова, которые должны быть выделены жирным шрифтом , менее важные значения - курсивом. При необходимости также используйте спискиМагия панд на работе. Вся логика отсутствует.
Сообщение об ошибке
"ValueError: If using all scalar values, you must pass an index"
говорит, что вы должны передать индекс.Это не обязательно означает, что передача индекса заставляет панд делать то, что вы от него хотите
Когда вы передаете индекс, pandas будет рассматривать ключи словаря как имена столбцов, а значения как то, что столбец должен содержать для каждого из значений в индексе.
Передача большего индекса:
Индекс обычно автоматически генерируется кадром данных, если он не указан. Тем не менее, панды не знает, сколько строк
2
и3
вы хотите. Однако вы можете быть более откровенным об этомИндекс по умолчанию равен 0, хотя.
Я бы рекомендовал всегда передавать словарь списков конструктору dataframe при создании кадров данных. Это легче читать для других разработчиков. У Pandas много предостережений, не заставляйте других разработчиков обращаться к экспертам во всех из них, чтобы прочитать ваш код.
источник
входные данные не должны быть списком записей - это может быть также один словарь:
Что, кажется, эквивалентно:
источник
Это потому, что DataFrame имеет два интуитивно понятных измерения - столбцы и строки.
Вы только указываете столбцы, используя ключи словаря.
Если вы хотите указать только одномерные данные, используйте Series!
источник
Преобразовать словарь в фрейм данных
Дайте новое имя колонке
источник
Если у вас есть словарь, вы можете превратить его в фрейм данных Pandas со следующей строкой кода:
источник
Просто передайте слово в списке:
источник