使用指定的列名称将字典转换为DataFrame

时间:2018-11-13 20:45:51

标签: python pandas dictionary

我有一本dict['TimeStamp'] = [value1,value2,value3]的字典 字典有很多次时间戳,例如每个时间戳都有3个值 我想使第1、2、3列的字典的所有值都成为熊猫数据框

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

我想制作一个pd的熊猫框架[timestamp] = dict.keys 并将所有列的值重命名为

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

那可能吗?

4 个答案:

答案 0 :(得分:3)

您可以通过解压缩字典并为列加标签来一行完成此操作:

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'])

答案 1 :(得分:0)

请查看以下相同的代码:

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

答案 2 :(得分:0)

Pandas开箱即用。只需将字典传递到pd.DataFrame

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

您还提到了要追求卓越,这对于熊猫来说很容易。

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

编辑:此解决方案可以一步一步地显示您的步骤,但是@ppinchuk的回答将您的原始请求记录在一行中,所以我认为这样更好。

答案 3 :(得分:-1)

只需将dict值用作数据,然后将其连同所需列名称的对应列表一起传递给GROUP BY构造函数即可。

SELECT e.eventid
     , e.name
     , ( SELECT COUNT(1)
           FROM participantlogs p
          WHERE p.eventid = e.eventid
       ) AS cnt
  FROM event e
  LEFT
  JOIN recreationalcategory c
    ON c.categoryid = e.categoryid

对于注释中的其他问题,可以通过将相应的键添加到每个值列表中,将dict键包含在其自己的列中。

DataFrame

或者使用dict键作为名为“ Timestamp”的索引。

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