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")