【发布时间】:2020-12-03 14:08:09
【问题描述】:
有些人会说这需要是两个独立的问题,但它们是相互关联的,所以我把它们都写在这里。
1.制作多索引列
我有三个数据框:
data_large = pd.DataFrame({"name":["a", "b", "c"], "sell":[10, 60, 50], "buy":[20, 30, 40]})
data_mini = pd.DataFrame({"name":["b", "c", "d"], "sell":[60, 20, 10], "buy":[30, 50, 40]})
data_topix = pd.DataFrame({"name":["a", "b", "c"], "sell":[10, 80, 0], "buy":[70, 30, 40]})
但首先,我想让他们的列像下面那样被多索引。
这是我尝试过的,但没有按预期工作。 name 低于索引级别 Nikkei225Large
iterables = [['Nikkei225Large'], ['name', 'buy', 'sell']]
index_large = pd.MultiIndex.from_product(iterables, names=['product', 'sell_buy'])
data_large.columns = index_large
2。使用多索引列连接多个 pandas,例如。使用reduce
接下来,在name 列上将三个数据框一起外连接。预期的输出是:
目前,我只是使用reduce 加入他们,如下所示,但我想使用多索引列。
from functools import reduce
dfs = {0: data_large, 1: data_mini, 2: data_topix}
def agg_df(dfList):
df_agged = reduce(lambda left, right: pd.merge(left, right,
left_index=True, right_index=True,
on='name',
how='outer'), dfList)
return df_agged
df_final = agg_df(dfs.values())
任何帮助将不胜感激!
【问题讨论】:
标签: pandas join reduce multi-index