我现在有一个包含1000个数据帧的字典。我想访问以进行更改或对这些数据框的特定列进行排序。我可以直接从字典访问它们的列,还是必须先从字典中提取所有数据帧,然后一个个地访问它们?
答案 0 :(得分:1)
您可以在列表理解或循环中直接访问它们,方法是遍历字典的键或直接遍历值(它们是数据帧)。
例如:
frames = {i:pd.DataFrame(np.random.random((5,2)), columns=['col1','col2']) for i in range(5)}
frames
是一个包含5个数据帧的字典,每个字典有2列。例如,
>>> frames[0]
col1 col2
0 0.100050 0.710130
1 0.834157 0.077837
2 0.024547 0.583344
3 0.328716 0.929574
4 0.948498 0.612750
显示第一个数据帧
要按第一列对每个对象进行排序,只需执行以下操作:
[frames[df].sort_values('col1', inplace=True) for df in frames.keys()]
或
[i.sort_values('col1', inplace=True) for i in frames.values()]
然后,当您再次访问frames[0]
时,它将进行排序:
>>> frames[0]
col1 col2
2 0.024547 0.583344
0 0.100050 0.710130
3 0.328716 0.929574
1 0.834157 0.077837
4 0.948498 0.612750
所有这些,这不是我要做的方式。我将所有框架与每个数据框架的某种标识符连接在一起,然后对主数据框架进行操作。但是,您尝试实现的目标可以通过我刚才概述的方式来实现。