【发布时间】:2020-11-30 00:57:17
【问题描述】:
我有两个 DataFrame,包含相同对象(人)的不同方面(左脚、右脚)的相同信息(长度、宽度)。
import pandas as pd
left_feet = pd.DataFrame(
data={
"Length": [20, 30, 25],
"Width": [8, 10, 9]},
index=[0, 1, 2])
right_feet = pd.DataFrame(
data={
"Length": [24, 30],
"Width": [8, 10]},
index=[2, 1])
print(left_feet)
Length Width
0 20 8
1 30 10
2 25 9
print(right_feet)
Length Width
2 24 8
1 30 10
我想将这些合并到一个 DataFrame 中,所以我这样做:
feet = pd.merge(left_feet, right_feet,
left_index=True, right_index=True,
suffixes=["_left", "_right"])
print(feet)
Length_left Width_left Length_right Width_right
1 30 10 30 10
2 25 9 24 8
但是,使用后缀很麻烦。相反,我希望列是 MultiIndex,其中第一级包含“左”和“右”,第二级包含“长度”和“宽度”。
最好的方法是什么?
注意:关于连接对齐的 DataFrames 的类似问题已经被问到,但这个问题是关于 join(即“合并”)操作的;这些行不一定是对齐的,并且可能并不总是有对应的行。
【问题讨论】:
-
我指的是串联和合并/加入的概念,而不是
pd.concat。如果concat函数实际上可以进行连接(而不仅仅是连接),那么这是一个很好的答案。感谢您的回答,如果我需要使用merge函数(可能用于其他合并功能),这一点很重要。 -
别担心,它本来可以更清楚的。我会编辑。
标签: python pandas join merge multi-index