1 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
我想我明白你現(xiàn)在想要實(shí)現(xiàn)的目標(biāo),但我認(rèn)為這不會(huì)join讓你實(shí)現(xiàn)這一目標(biāo)。和DataFrame.join都DataFrame.merge可以調(diào)用pandas.core.reshape.merge.merge,但使用DataFrame.merge可以讓您更好地控制應(yīng)用的默認(rèn)值。
在您的情況下,您可以使用引用列來通過元組列表加入,其中元組的元素是多索引列的級(jí)別。即要使用variables / fruit列,可以通過[('variables', 'fruit')].
使用元組是索引多索引列(和行索引)的方式。您需要將其包裝在列表中,因?yàn)榭梢允褂枚鄠€(gè)列或多個(gè)多索引列來執(zhí)行合并操作,就像 SQL 中的 JOIN 語句一樣。傳遞單個(gè)字符串只是一個(gè)方便的情況,它會(huì)為您包裝在列表中。
由于您僅加入 1 列,因此它是單個(gè)元組的列表。
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
添加回答
舉報(bào)