我这里有这个表,我试图从每列的每一行中获取值和设备类别,这样我就可以获得如下数据。
series: [{
name: 'engaged_sessions',
data: [{
name: 'Desktop',
y: 7765,
}, {
name: 'Mobile',
y: 388
},...
name: 'event_count',
data: [{
name: 'Desktop',
y: 51325,
}, {
name: 'Mobile',
y: 4349
},...
基本上遍历每一列,将设备类别和值放入字典列表中 这是数据透视表,
engaged_sessions event_count new_users total_revenue total_users
device_category
Desktop 7765 51325 6593 9 8021
Mobile 388 4349 795 0 412
Smart Tv 2 38 1 250 9
Tablet 87 111 37 0 97
我尝试使用 for 循环并将每次迭代放入列表中,但它不太正确。我得到的最接近的是 to_dict() 方法,我认为这是迄今为止最好的选择。
这里的这个问题(Pandas to_dict数据结构,使用列作为字典索引)非常相似,但我正在尝试按每列进行分组,如果我使用groupby(df.cloumns)或groupby(['column'],[ 'column'])它为我提供了其中包含数字的对象,但没有提及它们是什么
如果
df
包含您的问题中的旋转数据框,您可以执行以下操作:
out = []
for c in df:
out.append(
{"name": c, "data": [{"name": k, "y": v} for k, v in df[c].to_dict().items()]}
)
print(out)
打印:
[
{
"name": "engaged_sessions",
"data": [
{"name": "Desktop", "y": 7765},
{"name": "Mobile", "y": 388},
{"name": "Smart Tv", "y": 2},
{"name": "Tablet", "y": 87},
],
},
{
"name": "event_count",
"data": [
{"name": "Desktop", "y": 51325},
{"name": "Mobile", "y": 4349},
{"name": "Smart Tv", "y": 38},
{"name": "Tablet", "y": 111},
],
},
{
"name": "new_users",
"data": [
{"name": "Desktop", "y": 6593},
{"name": "Mobile", "y": 795},
{"name": "Smart Tv", "y": 1},
{"name": "Tablet", "y": 37},
],
},
{
"name": "total_revenue",
"data": [
{"name": "Desktop", "y": 9},
{"name": "Mobile", "y": 0},
{"name": "Smart Tv", "y": 250},
{"name": "Tablet", "y": 0},
],
},
{
"name": "total_users",
"data": [
{"name": "Desktop", "y": 8021},
{"name": "Mobile", "y": 412},
{"name": "Smart Tv", "y": 9},
{"name": "Tablet", "y": 97},
],
},
]