你好,我有一个令人讨厌的字典列表,我想将其放入数据框中
data = [
{
"name": "pod_name",
"type": "group",
"values": [
[
"7b977b5d68-mdwfc"
],
[
"d8b746cdf-hn5dx"
],
[
"d8b746cdf-wmxdq"
],
[
"d8b746cdf-8dv65"
],
[
"d8b746cdf-9dn2c"
],
[
"d8b746cdf-rh5c5"
],
[
"d8b746cdf-q5fz6"
],
[
"d8b746cdf-hvdmd"
],
[
"d8b746cdf-fgzcj"
],
[
"d8b746cdf-lhclk"
]
]
},
{
"name": "cpu_limit",
"type": "number",
"values": [
2.5,
1.5,
1.5,
1.5,
1.5,
1.5,
1.5,
1.5,
1.5,
1.5
]
},
{
"name": "mem_limit",
"type": "number",
"values": [
10737418240.0,
2147483648.0,
2147483648.0,
2147483648.0,
2147483648.0,
2147483648.0,
2147483648.0,
2147483648.0,
2147483648.0,
2147483648.0
]
}
]
Run Code Online (Sandbox Code Playgroud)
每个字典都是目标数据框中的一列,“名称”作为列,列表“值”作为数据。
到目前为止我的解决方案是这样的:
df = pd.DataFrame()
for col in data:
df[col['name']] = col['values']
print(df.head())
Run Code Online (Sandbox Code Playgroud)
老实说,这是相当干净的,但我很好奇是否有任何 pythonista 有更好的解决方案。(仅供参考,我正在研究 pandas 0.25...)
我宁愿在构造 DataFrame 之前使用字典理解以避免内存碎片:
df = pd.DataFrame({col['name']: col['values'] for col in data})
print(df)
# Output
pod_name cpu_limit mem_limit
0 [7b977b5d68-mdwfc] 2.5 1.073742e+10
1 [d8b746cdf-hn5dx] 1.5 2.147484e+09
2 [d8b746cdf-wmxdq] 1.5 2.147484e+09
3 [d8b746cdf-8dv65] 1.5 2.147484e+09
4 [d8b746cdf-9dn2c] 1.5 2.147484e+09
5 [d8b746cdf-rh5c5] 1.5 2.147484e+09
6 [d8b746cdf-q5fz6] 1.5 2.147484e+09
7 [d8b746cdf-hvdmd] 1.5 2.147484e+09
8 [d8b746cdf-fgzcj] 1.5 2.147484e+09
9 [d8b746cdf-lhclk] 1.5 2.147484e+09
Run Code Online (Sandbox Code Playgroud)