ValueError: передано 4 столбца, в переданных данных было 3 столбца при преобразовании списка python в фрейм данных. Как добавить пустые значения, если прошло 3? - PullRequest
1 голос
/ 05 августа 2020

У меня есть список под названием «данные», в котором обычно есть списки с 3 полями, но иногда их может быть 4: элементы, он будет работать нормально:

df = pd.DataFrame(data, columns=['First', 'Last', 'Weight', 'Height'])

, но если я запустил его в списке, показанном выше, он будет sh сказать

ValueError: 4 столбца прошли, прошли у данных было 3 столбца

Как я могу заставить его преобразовать его в df с пустыми значениями для столбца высоты без сбоев, когда я даю ему список списков без 4-го столбца? Таким образом, преобразование будет выполняться для списков, содержащих только len 3 элемента, len 4 элемента или их комбинацию.

Желаемый результат:

First   Last    Weight  Height
  Bob DeVito   100 Lbs    None
  Mac  Charles 150 Lbs    None

1 Ответ

1 голос
/ 05 августа 2020

Это должно решить вашу проблему. Сначала он создает словарь из элементов вашего списка в try / except l oop, так что, если нет значения высоты, вместо выдачи ошибки он помещает вместо этого np.nan. Наконец, он создает pandas фрейм данных из словаря.

import pandas as pd
import numpy as np

list = [['Bob', 'DeVito', '100 Lbs'], ['Mac', 'Charles', '150 Lbs']]
dict = {}
try:
    dict = [{ "First":a[0], "Last":a[1], "Weight":a[2], "Height": a[3]} for a in list]
except:
    dict = [{"First": a[0], "Last": a[1], "Weight": a[2], "Height": np.nan} for a in list]

print(dict)

df = pd.DataFrame(dict)
print(df)

Output :
   First     Last   Weight  Height
0   Bob   DeVito  100 Lbs     NaN
1   Mac  Charles  150 Lbs     NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...