我有以下问题: 我正在用 pandas 数据帧分析实验数据,因为数据本身有点复杂,结果我得到了这样的结果,它是一个包含字典的字典:
data = {aa: {1: 4, 2: 19, 3: 70, 4: 20}, bb: {1: 9, 2: 3, 3: 65, 4: 20}}
当尝试像这样从中获取 pandas 数据框时:
df = pd.DataFrame(list(data.items()), columns=['code', 'week1_2'])
我得到的结果是这样的:
0 ah03Di {'1': 11, '2': 11, '3': 12, '4': 14}
1 an02Ka {'1': 6, '2': 11, '3': 7, '4': 9}
但我更想要(或需要)的是这样的东西
0 ah03Di 11
1 ah303Di 11
2 ah03Di 12
3 ah03Di 14
4 an02ka 6
5 an02Ka 11
6 an02ka 7
7 an02ka 9
有没有简单的方法可以做到这一点?
请您参考如下方法:
import pandas as pd
pd.DataFrame(data).stack().reset_index()
level_0 level_1 0
0 1 aa 4
1 1 bb 9
2 2 aa 19
3 2 bb 3
4 3 aa 70
5 3 bb 65
6 4 aa 20
7 4 bb 20
对于您的名字和这两列:
(pd.DataFrame(data).stack().reset_index().drop(columns='level_0')
.rename(columns={'level_1': 'code', 0: 'week1_2'}))
# code week1_2
#0 aa 4
#1 bb 9
#2 aa 19
#3 bb 3
#4 aa 70
#5 bb 65
#6 aa 20
#7 bb 20
