Python 在数据帧中添加字典作为新行

Python 在数据帧中添加字典作为新行,python,python-3.x,pandas,dictionary,dataframe,Python,Python 3.x,Pandas,Dictionary,Dataframe,我有一个返回键和结果字典的函数 我想创建一个新函数,通过不同的值循环。每个值将生成一个具有不同结果但具有相同键的新字典 我想让这个函数创建一个dataframe,在循环的每次迭代中,索引(或第一列)被设置为循环的I值,行将成为结果字典 字典看起来像{key1:46,key2:100,key3:200} start = 10 stop = 100 step = 10 最终结果如下所示: key1 key2 key3 10 46 100 200 20 50 75

我有一个返回键和结果字典的函数

我想创建一个新函数,通过不同的值循环。每个值将生成一个具有不同结果但具有相同键的新字典

我想让这个函数创建一个dataframe,在循环的每次迭代中,索引(或第一列)被设置为循环的I值,行将成为结果字典

字典看起来像
{key1:46,key2:100,key3:200}

start = 10
stop = 100
step = 10
最终结果如下所示:

    key1  key2  key3
10   46   100    200
20   50    75     60
30   80     2     10
40   100    50     6
50   10     8      33
etc...

创建一个值和函数返回的字典的嵌套字典,然后使用数据帧构造函数
(来自_dict
),并在最后使用
orient='index'

import pandas as pd
import numpy as np
np.random.seed(123)

start = 10
stop = 100
step = 10

d2 = {}
while start <= stop:
    # Simulating your function that returns a dictionary:
    d = {'key1': np.random.randint(1,100), 
         'key2': np.random.randint(1,10), 
         'key3': np.random.randint(20,70)}
    # Add that dictionary to a dictionary
    d2[start] = d
    start+=step

pd.DataFrame.from_dict(d2, orient='index')
尝试此功能:

import pandas as pd
import random

d = {'key1': 46, 'key2':100,'key3':200}

def function(d):
    df = pd.DataFrame(index=d.keys())
    for i in range(10,110,10):
        if i==10: df[i]=d.values() # if you want the original values to be placed first
        else:
            df[i] = [random.randint(1,101) for i in range(0,len(d.keys()))]
    return df.T

function(d)
这将获得您想要的输出:

输出:

     key1  key2  key3
10     67     3    58
20     18     4    62
30     58     7    53
40     97     2    67
50     74     1    66
60     97     4    34
70     37     1    36
80     69     2    23
90      3     5    59
100    67     5    67
     key1  key2  key3
10     46   100   200
20     17    82    50
30     53    34    49
40     25    97    39
50     91    37    73
60     62    48    20
70     50    65    77
80      2    44    28
90     47    92    61
100    16    13    18

不确定从值列表中选择对象的规则。。所以我在这里做了一个随机选择。但想法应该是相似的:

value_list = np.random.rand(1000).tolist()
df = pd.DataFrame()
for i in range(10, 101, 10):
    a, b, c = random.sample(value_list, 3)
    df.loc[i, 'key1'] = a
    df.loc[i, 'key2'] = b
    df.loc[i, 'key3'] = c

很不错的!工作很有魅力谢谢你。其他答案也很有效!