我有一个返回键和结果字典的函数。
我想创建一个循环遍历不同值的新函数。每个值都会产生一个新的字典,其结果不同,但键相同。
我想让此函数创建一个数据框,并在每次循环迭代时,将索引(或第一列)设置为循环的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...
答案 0 :(得分:4)
创建一个值的嵌套字典,然后该函数返回该字典,然后在最后使用DataFrame构造函数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
答案 1 :(得分:0)
尝试此功能:
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 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
答案 2 :(得分: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