У меня есть серия, которая выглядит так:
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
:
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
fiiled словарей преобразовать его в списки до 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
df = pd.DataFrame(pd.Series(ser).values.tolist())