Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将字典转换为具有指定列名的DataFrame_Python_Pandas_Dataframe_Dictionary - Fatal编程技术网

Python 将字典转换为具有指定列名的DataFrame

Python 将字典转换为具有指定列名的DataFrame,python,pandas,dataframe,dictionary,Python,Pandas,Dataframe,Dictionary,我有一本字典,它是dict['TimeStamp']=[value1,value2,value3] dict有许多时间戳,例如,每个时间戳有3个值 我想把第1、2、3列字典的所有值都做成熊猫数据框 dict['timestamp1'] = [1,2,3] dict['timestamp2'] = [4,5,6] 我想用pd[timestamp]=dict.keys做一个熊猫框架 并将列的所有值重命名为 pd['firstcolumn'] = [1,4,..etc] pd['secondcolu

我有一本字典,它是
dict['TimeStamp']=[value1,value2,value3]
dict有许多时间戳,例如,每个时间戳有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]

这可能吗?

只需使用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”的索引


请查看以下代码,该代码具有相同的功能:

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

您可以在一行中完成此操作,方法是解压缩字典并标记列:

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

熊猫是开箱即用的。只需将字典传递给
pd.DataFrame

p = {}
p['firstcolumn'] = [1,4]
p['secondcolumn'] = [2,5]
p['thirdcolumn'] = [3,6]
df = pd.DataFrame(p)
您还提到想要推动excel,这对熊猫来说很容易

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

编辑:这个解决方案一个接一个地向您显示步骤,但是@ppinchuk的答案在一行中完成了您最初的请求,所以我认为这样更好。

您可以通过将字典作为
pd.DataFrame(dict)
传递来获得您想要的结果吗,然后将其转换为
df=df.T
?@G.Anderson我想用名称命名列,将它们输出到excel文件
df.columns=['firstcolumn','secondcolumn','thirdcolumn']
我需要在带有标题timestamp的同一个df中添加timestamp 1,timestamp 2,我可以将timestamp列命名为timestamp吗?我需要添加timestamp 1,timestamp2,与标题时间戳在同一个df中–chris burgeesThanks这么多!。是否可以按时间戳对pandaframe进行排序?是的,请查看
df = pd.DataFrame(p)
df.columns=["col1", "col2", "col3"]
df.to_excel("file.xlsx")