1 回答

TA貢獻1796條經驗 獲得超4個贊
我想我明白你現在想要實現的目標,但我認為這不會join讓你實現這一目標。和DataFrame.join都DataFrame.merge可以調用pandas.core.reshape.merge.merge,但使用DataFrame.merge可以讓您更好地控制應用的默認值。
在您的情況下,您可以使用引用列來通過元組列表加入,其中元組的元素是多索引列的級別。即要使用variables / fruit列,可以通過[('variables', 'fruit')].
使用元組是索引多索引列(和行索引)的方式。您需要將其包裝在列表中,因為可以使用多個列或多個多索引列來執行合并操作,就像 SQL 中的 JOIN 語句一樣。傳遞單個字符串只是一個方便的情況,它會為您包裝在列表中。
由于您僅加入 1 列,因此它是單個元組的列表。
import pandas as pd
index1 = pd.MultiIndex.from_product([["variables"], ["number", "fruit"]])
df1 = pd.DataFrame([["one", "apple"], ["two", "banana"]], columns=index1)
index2 = pd.MultiIndex.from_product([["variables"], ["fruit", "color"]])
df2 = pd.DataFrame([["banana", "yellow"]], columns=index2)
df1.merge(df2, how='left', on=[('variables', 'fruit')])
# returns:
variables
number fruit color
0 one apple NaN
1 two banana yellow
添加回答
舉報