当我在python 3.5.6和3.7.3中迭代数据帧时,我意识到了一个区别,我无法确定它的好坏。
import pandas as pd
class Something(object):
def __init__(self, data):
self.data = data
data = {
'col1': [1, 2, 4],
'col2': [3, 4, None],
'col3': ['-', None, 2.4],
'Time': [0, 0.1, 0.5],
}
df = pd.DataFrame(data=data, index=['a', 'b', 'c'])
something = Something(df)
ret = []
for i in something.data:
ret.append(i)
print(ret)
3.5.6:始终返回:['Time','col1','col2','col3'](看起来熊猫对键进行排序)
3.7.3:始终返回:['col1','col2','col3','Time'](看起来熊猫保留了原始顺序)
我读到,自python 3.6+起,它们保留了字典的插入顺序。 (Are dictionaries ordered in Python 3.6+?)
在3.5.6中,大熊猫对钥匙进行了排序, 但是在3.7.3中,它以某种方式考虑了dict的原始顺序(如3.7.3 python所做的那样),因此在更新后我们的某些测试失败了,但我无法确定这种行为是否可以接受。 / p>
您认为这是一个问题吗?
有人可以解释这种行为吗?