【发布时间】:2019-08-09 04:04:45
【问题描述】:
如果我有一些示例数据:
dic = {'common': {'value': 18, 'attr': 20, 'param': 22},
'fuzzy': {'value': 14, 'attr': 21, 'param': 24},
'adhead': {'value': 13, 'attr': 20, 'param': 29}}
执行pd.DataFrame(dic)我得到:
common fuzzy adhead
attr 20 21 20
param 22 24 29
value 18 14 13
在这里,“外部”列是可以的,但“内部”是排序的,这是我需要避免的。如何快速完成? (需要保持排序 - 这里的行是排序的)
提示:我在鞋底上有一条消息:
main:95:FutureWarning:排序,因为非串联轴未对齐。未来版本的 pandas 将更改为不按 默认。
要接受未来的行为,请传递 'sort=True'。
要保留当前行为并使警告静音,请通过 排序=假
但不知道是干什么用的。将此参数传递给 pd.DataFrame(dic, sort=False) 返回:
TypeError: __init__() got an unexpected keyword argument 'sort'.
【问题讨论】:
-
请参考OrderedDict
-
字典没有顺序,所以没有顺序要维护。
-
@ecortazar 你不认为 OrderedDict 会起作用吗?
-
好的,但我尝试了“OrderedDict”,但没有任何改变。
-
由于 sub-dict 的顺序似乎很重要,因此字典显然不是他们正确的数据结构。我会建议从列表开始。如果您收到的是字典,那么 pandas 无法猜测正确的顺序应该是什么,因此您需要在之后重新索引。