这个问题来自于这个答案,其中一个用户使用
d.keys()并d.values()单独初始化数据帧.
众所周知,3.6版本的python版本中的字典不是有序的.
考虑表单的通用字典:
d = {k1 : v1, k2 : v2, k3 : v3}
Run Code Online (Sandbox Code Playgroud)
其中键k*是任何可清洗对象,值v*是任何对象.当然,订单无法保证,但顺序d.keys()和d.values()?
Python 2.x
两者d.keys()和d.values()返回列表.比如说,按顺序.keys()返回d键[k2, k1, k3].难道现在总是保证该d.values()返回相同的相对排序的[v2, v1, v3]?此外,无论调用这些函数多少次,顺序是否保持不变?
Python 3.x(<3.6)
我不是百分百肯定,但我相信.keys并且.values不保证这里有任何排序,因为它们是类似于集合的结构,因此没有按照定义的顺序,并且使您能够对它们执行类似集合的操作.但我仍然有兴趣知道在这个例子中两个调用之间是否存在任何相对排序.我猜不是.如果有人可以肯定或纠正我,我会很感激.
我有两个具有(不一定)相同索引和列名的 Pandas DataFrame。
>>> df_L = pd.DataFrame({'X': [1, 3],
'Y': [5, 7]})
>>> df_R = pd.DataFrame({'X': [2, 4],
'Y': [6, 8]})
Run Code Online (Sandbox Code Playgroud)
我可以将它们连接在一起并分配后缀。
>>> df_L.join(df_R, lsuffix='_L', rsuffix='_R')
X_L Y_L X_R Y_R
0 1 5 2 6
1 3 7 4 8
Run Code Online (Sandbox Code Playgroud)
但我想要的是在“X”和“Y”下制作“L”和“R”子列。
所需的 DataFrame 如下所示:
>>> pd.DataFrame(columns=pd.MultiIndex.from_product([['X', 'Y'], ['L', 'R']]),
data=[[1, 5, 2, 6],
[3, 7, 4, 8]])
X Y
L R L R
0 1 5 2 6
1 3 7 4 8
Run Code Online (Sandbox Code Playgroud)
有没有办法可以组合两个原始数据帧来获得所需的数据帧?