Преобразование значений ряда со значениями словаря в DataFrame.Не сама серия - PullRequest
0 голосов
/ 12 октября 2018

У меня есть серия, которая выглядит следующим образом:

d1 = {'Class': 'A', 'age':35, 'Name': 'Manoj'}
d2 = {'Class': 'B', 'age':15, 'Name': 'Mot'}
d3 = {'Class': 'B', 'age':25, 'Name': 'Vittoo'}

ser = [d1, d2, d3]

dummy = pd.Series(ser)
dummy
0     {'Class': 'A', 'age': 35, 'Name': 'Manoj'}
1     {'Class': 'B', 'age': 15, 'Name': 'Mot'}
2    {'Class': 'B', 'age': 25, 'Name': 'Vittoo'}

Когда я использую функцию to_frame, она делает это:

dummy.to_frame()

                      0
0   {'Class': 'A', 'age': 35, 'Name': 'Manoj'}
1   {'Class': 'B', 'age': 15, 'Name': 'Mot'}
2   {'Class': 'B', 'age': 25, 'Name': 'Vittoo'}

Но я намереваюсь получить следующее:

Class   Name    age
0   A   Manoj   35
1   B   Mot     15
2   B   Vittoo  25

Я попробовал это, которое отлично работает:

df = pd.DataFrame(dummy)
df = df[0].apply(pd.Series)
df

Но это кажется очень неэффективным, потому что мне нужно преобразовать Series в dataframe и снова применить функцию Series к полному dataframe,Поскольку я работаю с миллионами строк, я хотел бы знать, есть ли более эффективное решение.

1 Ответ

0 голосов
/ 12 октября 2018

Вместо этого используйте DataFrame конструктор Series конструктор:

d1 = {'Class': 'A', 'age':35, 'Name': 'Manoj'}
d2 = {'Class': 'B', 'age':15, 'Name': 'Mot'}
d3 = {'Class': 'B', 'age':25, 'Name': 'Vittoo'}

ser = [d1, d2, d3]

df = pd.DataFrame(ser)
print (df)
  Class    Name  age
0     A   Manoj   35
1     B     Mot   15
2     B  Vittoo   25

Если входные данные Series представлены словарями, преобразуйте их в списки перед конструктором DataFrame, to_frameне обязательно:

dummy = pd.Series(ser)

df = pd.DataFrame(dummy.values.tolist())
print (df)
  Class    Name  age
0     A   Manoj   35
1     B     Mot   15
2     B  Vittoo   25
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...