您希望将给定键的每个子列表^{}组合在一起,以组合每个子列表中的值来形成新行:>>> list(zip(*D['d1']))
[('a1', 'a2', 'a3'), ('a1', 'a2', 'a3'), ('a1', 'a2', 'a3')]
然后将此应用到字典中的每个值,以生成一个平坦的行序列,在该序列中选择对。在
我假设您想在这里将dN与{}配对,而不考虑密钥的数量。注意,字典实际上是无序的(尽管python3.6和up的插入顺序是保留的),所以您可能需要先应用一些排序:
^{pr2}$
之后我们可以将它们与zip(sorted_keys, sorted_keys[1:])配对:>>> sorted_keys = sorted(D)
>>> list(zip(sorted_keys, sorted_keys[1:]))
[('d1', 'd2'), ('d2', 'd3'), ('d3', 'd4')]
使用此序列对行并展平生成的键序列,然后压缩行:sorted_keys = sorted(D)
paired = (k for keys in zip(sorted_keys, sorted_keys[1:]) for k in keys)
df = pd.DataFrame(
(row for k in paired for row in zip(*D[k])),
columns=['Time_sec', 'Temperature', 'Damage']
)
这会产生:Time_sec Temperature Damage
0 a1 a2 a3
1 a1 a2 a3
2 a1 a2 a3
3 b1 b2 b3
4 b1 b2 b3
5 b1 b2 b3
6 b1 b2 b3
7 b1 b2 b3
8 b1 b2 b3
9 c1 c2 c3
10 c1 c2 c3
11 c1 c2 c3
12 c1 c2 c3
13 c1 c2 c3
14 c1 c2 c3
15 d1 d2 d3
16 d1 d2 d3
17 d1 d2 d3