我有一本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]
那可能吗?
答案 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