Pandas: створіть dataframe із dict різної довжини


Ви можете використовувати такий базовий синтаксис, щоб створити pandas DataFrame зі словника, записи якого мають різну довжину:

 import pandas as pd

df = pd. DataFrame (dict([(key, pd. Series (value)) for key, value in some_dict. items ()]))

Цей синтаксис перетворює список масивів словників у список серій pandas.

Це дозволяє нам створити pandas DataFrame і просто заповнити значення NaN, щоб гарантувати, що кожен стовпець у результуючому DataFrame має однакову довжину.

У наступному прикладі показано, як використовувати цей синтаксис на практиці.

Приклад: створіть Pandas DataFrame із dict різної довжини

Припустимо, що у нас є наступний словник, що містить записи різної довжини:

 #create dictionary whose entries have different lengths
some_dict = dict(A=[2, 5, 5, 7, 8], B=[9, 3], C=[4, 4, 2])

#view dictionary
print (some_dict)

{'A': [2, 5, 5, 7, 8], 'B': [9, 3], 'C': [4, 4, 2]}

Якщо ми спробуємо використати функцію from_dict() , щоб перетворити цей словник на pandas DataFrame, ми отримаємо помилку:

 import pandas as pd

#attempt to create pandas DataFrame from dictionary
df = pd. DataFrame . from_dict (some_dict)

ValueError : All arrays must be of the same length

Ми отримуємо помилку про те, що всі масиви в словнику мають бути однакової довжини.

Щоб обійти цю помилку, ми можемо використати такий синтаксис для перетворення словника на DataFrame:

 import pandas as pd

#create pandas DataFrame from dictionary
df = pd. DataFrame (dict([(key, pd. Series (value)) for key, value in some_dict. items ()]))

#view DataFrame
print (df)

   ABC
0 2 9.0 4.0
1 5 3.0 4.0
2 5 NaN 2.0
3 7 NaN NaN
4 8 NaN NaN

Зауважте, що ми можемо успішно створити pandas DataFrame, а значення NaN доповнюються, щоб кожен стовпець мав однакову довжину.

Якщо ви хочете замінити ці значення NaN на інші значення (наприклад, нуль), ви можете використовувати функцію replace() наступним чином:

 #replace all NaNs with zeros
df. replace (np. nan , 0, inplace= True )

#view updated DataFrame
print (df)

   ABC
0 2 9.0 4.0
1 5 3.0 4.0
2 5 0.0 2.0
3 7 0.0 0.0
4 8 0.0 0.0

Зверніть увагу, що кожне значення NaN було замінено на нуль.

Не соромтеся використовувати функцію replace() , щоб замінити значення NaN на будь-яке значення.

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в pandas:

Pandas: Як перетворити DataFrame на словник
Pandas: Як перейменувати стовпці за допомогою словника
Pandas: як заповнити значення NaN за допомогою словника

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *