我想将信息连接到多索引的主索引。更具体地说,我想在仅引用产品代码的主索引列中合并导入产品的产品描述。
考虑以下代码...
index = [('A', 'x'), ('A', 'y'),
('B', 'z'), ('B', 'w'),
('C', 's'), ('C', 'q')]
Numeric = [33871648, 37253956,
18976457, 19378102,
20851820, 25145561]
index = pd.MultiIndex.from_tuples(index)
pop = pd.Series(Numeric, index=index)
pop.index.names = ['Imported Product', 'Manufactured Product']
print(pop)
当前结果:
Imported Product Manufactured Product
A x 33871648
y 37253956
B z 18976457
w 19378102
C s 20851820
q 25145561
考虑我有一个单独的数据框,其中包含以下信息...
Imported Product Product Description
A Widget 1
B Widget 2
C Widget 3
所需结果:
Imported Product Manufactured Product
A - Widget 1 x 33871648
y 37253956
B - Widget 2 z 18976457
w 19378102
C - Widget 3 s 20851820
q 25145561
这里的核心思想是利用第一列中创建的额外空白。在我的真实数据中,一种进口产品可能会进入100多种制成品中,因此,我宁愿按照此处要求的方式进行处理,而不是添加新列来带来进口产品说明,因为我的多指标也已经许多列。
上面我只是提到产品描述是要连接到主索引中的信息项...在我的真实数据中,还有其他我想使用的信息,包括python中计算所得的信息。
提前致谢!!!
最佳答案
set_index
+ map
+ set_levels
通过您的mapper
数据框创建一个映射,然后使用set_levels
:
s = mapper.set_index('Imported Product')['Product Description']
new_labels = pop.index.levels[0] + '-' + pop.index.levels[0].map(s.get)
pop.index.set_levels(new_labels, level=0, inplace=True)
print(pop)
Imported Product Manufactured Product
A-Widget1 x 33871648
y 37253956
B-Widget2 z 18976457
w 19378102
C-Widget3 s 20851820
q 25145561
dtype: int64
关于python - 将字符串连接到从另一个数据帧映射的MultiIndex级别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53318411/