Python 将dataframe转换为行序列的字典

Python 将dataframe转换为行序列的字典,python,pandas,dataframe,dictionary,iteration,Python,Pandas,Dataframe,Dictionary,Iteration,我需要在一个非常大的数据帧(1000万x 70)上迭代(向量操作不可能)。使用df.loc[i,col]直接访问数据帧太慢了。在过去,我会首先将dataframe转换为字典字典,它允许我快速迭代。然而,这种方法占用了大量内存,对于我当前的数据不再可行 我需要牺牲一些查找速度来节省内存。最好的方法是什么?将我的数据帧转换为行序列{index:series}的字典是否有效?您的意思是: In [1112]: pd.DataFrame(df.reset_index().to_dict(orient='

我需要在一个非常大的数据帧(1000万x 70)上迭代(向量操作不可能)。使用df.loc[i,col]直接访问数据帧太慢了。在过去,我会首先将dataframe转换为字典字典,它允许我快速迭代。然而,这种方法占用了大量内存,对于我当前的数据不再可行


我需要牺牲一些查找速度来节省内存。最好的方法是什么?将我的数据帧转换为行序列{index:series}的字典是否有效?

您的意思是:

In [1112]: pd.DataFrame(df.reset_index().to_dict(orient='records'))                                                                                                                                        
Out[1112]: 
   index  id  block check
0      0   6     25   yes
1      1   6     32    no
2      2   9     18   yes
3      3  12     17    no
4      4  15     23   yes
5      5  15     11   yes
6      6  15     15   yes

In [1113]: df.reset_index().to_dict(orient='records')                                                                                                                                                      
Out[1113]: 
[{'index': 0, 'id': 6, 'block': 25, 'check': 'yes'},
 {'index': 1, 'id': 6, 'block': 32, 'check': 'no'},
 {'index': 2, 'id': 9, 'block': 18, 'check': 'yes'},
 {'index': 3, 'id': 12, 'block': 17, 'check': 'no'},
 {'index': 4, 'id': 15, 'block': 23, 'check': 'yes'},
 {'index': 5, 'id': 15, 'block': 11, 'check': 'yes'},
 {'index': 6, 'id': 15, 'block': 15, 'check': 'yes'}]

您可以这样做(感谢@pressurationslayer提供的示例df):

输出:

{0: {'id': 6, 'block': 25, 'check': 'yes'}, 1: {'id': 6, 'block': 32, 'check': 'no'}, 2: {'id': 9, 'block': 18, 'check': 'yes'}, 3: {'id': 12, 'block': 17, 'check': 'no'}, 4: {'id': 15, 'block': 23, 'check': 'yes'}, 5: {'id': 15, 'block': 11, 'check': 'yes'}, 6: {'id': 15, 'block': 15, 'check': 'yes'}}
如果您特别(出于某种原因)希望它是
{index:series}
,您可以这样做,也可以通过相同的方式访问它(即
df_name[i][col]


有什么特别的原因使您希望它们作为一个系列而不是一个dict或命名元组吗?您能提供示例输出/inpu吗?我尝试了一个基于我认为您所寻找的内容的答案。将行转换为系列几乎肯定是一个坏主意。我们能得到更多的上下文吗?你的数据是什么样子的?我给这个问题添加了一些上下文。要点是,我的口述占用了太多的内存。
{0: {'id': 6, 'block': 25, 'check': 'yes'}, 1: {'id': 6, 'block': 32, 'check': 'no'}, 2: {'id': 9, 'block': 18, 'check': 'yes'}, 3: {'id': 12, 'block': 17, 'check': 'no'}, 4: {'id': 15, 'block': 23, 'check': 'yes'}, 5: {'id': 15, 'block': 11, 'check': 'yes'}, 6: {'id': 15, 'block': 15, 'check': 'yes'}}
df.T.to_dict('series')