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



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

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

输出:

c1   c2
0  10  100
1  11  110
2  12  120

所以我想有这样的东西:

{
"fields": {
"c1": 10,
"c2": 100,
}
},
{
"fields": {
"c1": 11,
"c2": 110,
}
},
{
"fields": {
"c1": 12,
"c2": 120,
}
}

我该怎么做呢?

你可以这样做:

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}}]

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

您可以尝试使用df.to_dictorient作为records

out = df.to_dict(orient='records')
# [{'c1': 10, 'c2': 100}, {'c1': 11, 'c2': 110}, {'c1': 12, 'c2': 120}]
out = [{'fields': val} for val in out]
[{'fields': {'c1': 10, 'c2': 100}},
{'fields': {'c1': 11, 'c2': 110}},
{'fields': {'c1': 12, 'c2': 120}}]

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}}]

Pandas的内置方法to_dict()允许将数据帧转换为序列化的记录列表。您想要的输出将需要对这些记录进行转换:

# Get each row as a record
records = df.to_dict(orient='records')
# [{'c1': 10, 'c2': 100}, {'c1': 11, 'c2': 110}, {'c1': 12, 'c2': 120}]
# Transform each row
records = [{'fields':x} for x in records]
# [{'fields': {'c1': 10, 'c2': 100}},
# {'fields': {'c1': 11, 'c2': 110}},
# {'fields': {'c1': 12, 'c2': 120}}]

最新更新