Python 在数据帧中添加字典作为新行
我有一个返回键和结果字典的函数 我想创建一个新函数,通过不同的值循环。每个值将生成一个具有不同结果但具有相同键的新字典 我想让这个函数创建一个dataframe,在循环的每次迭代中,索引(或第一列)被设置为循环的I值,行将成为结果字典 字典看起来像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
{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
很不错的!工作很有魅力谢谢你。其他答案也很有效!