如何将数据帧的每一行传递给数组

Eka*_*e 3 5 python pandas

如何在字段数组中添加数据框行就像我有我的数据框。

import pandas as pd
inp = [{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}]
df = pd.DataFrame(inp)
print df
Run Code Online (Sandbox Code Playgroud)

输出:

   c1   c2
0  10  100
1  11  110
2  12  120

Run Code Online (Sandbox Code Playgroud)

所以我想要这样的东西:

{
  "fields": {
        "c1": 10,
        "c2": 100,
   }
},
{
  "fields": {
        "c1": 11,
        "c2": 110,
   }
},
{
  "fields": {
        "c1": 12,
        "c2": 120,
   }
}
Run Code Online (Sandbox Code Playgroud)

我该怎么做 ?

use*_*287 6

你可以做:

a = df.transpose().to_dict()
a
>>> {0: {'c1': 10, 'c2': 100}, 1: {'c1': 11, 'c2': 110}, 2: {'c1': 12, 'c2': 120}}
res = [{'fields': a[i]} for i in a]
res
>>> [{'fields': {'c1': 10, 'c2': 100}}, {'fields': {'c1': 11, 'c2': 110}}, {'fields': {'c1': 12, 'c2': 120}}]
Run Code Online (Sandbox Code Playgroud)

正如@anky 指出的,a像这样定义:a = df.to_dict('index')也可以工作,不确定哪个计算效率更高


WeN*_*Ben 3

尝试使用链条df.to_dict

d = [{'field' : x} for x in df.to_dict('records')]
Out[167]: 
[{'field': {'c1': 10, 'c2': 100}},
 {'field': {'c1': 11, 'c2': 110}},
 {'field': {'c1': 12, 'c2': 120}}]
Run Code Online (Sandbox Code Playgroud)