Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过逐行迭代数据帧来创建字典_Python_Pandas_Dictionary - Fatal编程技术网

Python 通过逐行迭代数据帧来创建字典

Python 通过逐行迭代数据帧来创建字典,python,pandas,dictionary,Python,Pandas,Dictionary,这是一个简单的数据帧 sample=pd.DataFrame({'Budjet_id':['K1','K2','K3'],'cost':[20000,30000,4000]}) sample Budjet_id cost 0 K1 20000 1 K2 30000 2 K3 4000 将其转换为字典,并将其嵌入另一个类似这样的字典中 data={} data['work'] = 'Budget' data['dat

这是一个简单的数据帧

sample=pd.DataFrame({'Budjet_id':['K1','K2','K3'],'cost':[20000,30000,4000]})
sample 
   Budjet_id    cost
0       K1     20000
1       K2     30000
2       K3     4000
将其转换为字典,并将其嵌入另一个类似这样的字典中

 data={}
 data['work'] = 'Budget'
 data['data_sample']=[{m:sample.values[i][n] for n, m in enumerate(sample.columns)} for i in range(0,len(sample))]
 data
这将提供以下输出

{'work': 'Budget',
 'data_sample': [{'Budjet_id': 'K1', 'cost': 20000},
                 {'Budjet_id': 'K2', 'cost': 30000},
                 {'Budjet_id': 'K3', 'cost': 4000}]}
但预期产出如下

{'work': 'Budget','data_sample':{'Budjet_id':'K1','cost':'20000'},
               'data_sample':{'Budjet_id':'K2','cost':'30000'},
                'data_sample':{'Budjet_id':'K2','cost':'4000'}}
有没有办法做到这一点

{'work': 'Budget','data_sample':{'Budjet_id':'K1','cost':'20000'},
           'data_sample':{'Budjet_id':'K2','cost':'30000'},
            'data_sample':{'Budjet_id':'K2','cost':'4000'}}

如果这是您想要的输出,则它不是有效的字典,因为同一个键有多个数据。

预期输出的问题是存在重复的
key
s,python中的dict需要唯一的键。因此无法创建。看起来您想要的结果需要一个字典,其中键
data\u sample
出现多次。字典不允许这样做。
@jezrael
@BoarGules
@MircoT
是的,你的评论都可以接受。我试图在R
中为(我在start_from_row:NROW(dataset)){data_sample_row=list()data_sample_row[['data_sample']]]=as.list(dataset[I,])复制此代码
通过创建一个简单的
数据框
并在
for循环
中添加一些其他
。然后将其作为
JSON脚本
发送到
请求。post