Преобразовать словарь в DataFrame с указанными именами столбцов - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть словарь, который dict['TimeStamp'] = [value1,value2,value3] у dict есть многократные отметки времени, и каждая отметка времени имеет 3 значения, например Я хочу сделать panda dataframe из всех значений словаря column1, 2, 3

dict['timestamp1'] = [1,2,3]
dict['timestamp2'] = [4,5,6]

Я хочу сделать panda frame из pd [timestamp] = dict.keys и переименуйте все значения столбцов как

pd['firstcolumn'] = [1,4,..etc]
pd['secondcolumn'] = [2,5,..etc]
pd['thirdcolumn'] = [3,6,..etc]

это возможно?

Ответы [ 4 ]

0 голосов
/ 13 ноября 2018

Панды делают это из коробки.Просто передайте словарь на pd.DataFrame

p = {}
p['firstcolumn'] = [1,4]
p['secondcolumn'] = [2,5]
p['thirdcolumn'] = [3,6]
df = pd.DataFrame(p)

Вы также упомянули о желании добиться успеха, что легко с Pandas.

df = pd.DataFrame(p)
df.columns=["col1", "col2", "col3"]
df.to_excel("file.xlsx")

Редактировать: это решение показывает вам первые шаги-по-одному, но ответ @ ppinchuk выполняет ваш исходный запрос в одну строку, поэтому я думаю, что это лучше.

0 голосов
/ 13 ноября 2018

Проверьте приведенный ниже код, который делает то же самое:

dict = {'timestamp1' : [1,2,3], 'timestamp2':[3,4,5], 'timestamp3' : [6,7,8]}
df = pd.DataFrame(dict)
df.T

Выход:

           0    1   2
timestamp1  1   2   3
timestamp2  3   4   5
timestamp3  6   7   8
0 голосов
/ 13 ноября 2018

Вы можете сделать это в одну строку, распаковав словарь и пометив столбцы:

pd.DataFrame(data=[*dict.values()], columns=['firstcolumn','secondcolumn', 'thirdcolumn'])

Редактировать: Вы можете добавить временные метки в их собственный столбец, но процесс распаковки немного сложнее:

pd.DataFrame(data=[[item[0], *(item[1:][0])] for item in dict.items()], columns=['TimeStamp', 'firstcolumn','secondcolumn', 'thirdcolumn'])
0 голосов
/ 13 ноября 2018

Просто используйте значения dict в качестве ваших данных и затем передайте их конструктору DataFrame вместе с соответствующим списком имен столбцов, которые вы хотите.

import pandas as pd

d = {'timestamp1': [1,2,3], 'timestamp2': [4,5,6]}

df = pd.DataFrame(d.values(), columns=['first_col', 'second_col', 'third_col'])

print(df)
#    first_col  second_col  third_col
# 0          1           2          3
# 1          4           5          6

За дополнительный вопрос в вашем комментарии,Вы можете включить ключи dict в их собственный столбец, добавив соответствующий ключ к каждому списку значений.

df = pd.DataFrame([[k, *v] for k, v in d.items()], columns=['Timestamp', 'first_col', 'second_col', 'third_col'])

print(df)
#     Timestamp  first_col  second_col  third_col
# 0  timestamp1          1           2          3
# 1  timestamp2          4           5          6 

Или с ключами dict в качестве индекса с именем «Timestamp».

df = pd.DataFrame.from_dict(d, orient='index', columns=['first_col', 'second_col', 'third_col'])
df.index.names = ['Timestamp']

print(df)
#             first_col  second_col  third_col
# Timestamp                                   
# timestamp1          1           2          3
# timestamp2          4           5          6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...