在数据框中添加一个字典作为新行

6
我有一个返回键和结果字典的函数。
我想创建一个新函数,循环不同的值。每个值都会产生一个新的结果不同但具有相同键的字典。
我希望这个函数创建一个数据框,并且在循环迭代过程中,索引(或第一列)设置为循环的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...
2个回答

4
创建一个嵌套字典来保存函数的返回值和对应的字典,最后使用from_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')

输出:

     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

非常好!像魔法一样顺利,谢谢。其他答案也很好用! - novawaly

0

不确定你从值列表中选择对象的规则..所以我只是随机选择了一个。但是思路应该是类似的:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接