【发布时间】:2021-06-25 21:37:23
【问题描述】:
我目前正在尝试根据组内的其他索引分配具有某些索引的行。
考虑以下 pandas 数据框:
import pandas as pd
import numpy as np
index = pd.MultiIndex.from_product([list('abc'), ['aa', 'bb', 'cc']])
df = pd.DataFrame({'col1': np.arange(9),
'col2': np.arange(9, 18),
'col3': np.arange(18,27)},
index=index)
df的输出:
col1 col2 col3
a aa 0 9 18
bb 1 10 19
cc 2 11 20
b aa 3 12 21
bb 4 13 22
cc 5 14 23
c aa 6 15 24
bb 7 16 25
cc 8 17 26
我想根据第一级索引分配索引“cc”等于“aa”加上“bb”。
以下工作正常,但我想知道是否有一种方法可以设置值而无需引用底层 NumPy 数组。
df.loc[pd.IndexSlice[:, 'cc'], :] = (df.xs('aa', level=1)
+ df.xs('bb', level=1)).values
有没有办法将“cc”行直接设置为下面的输出?我认为尝试直接设置以下内容的问题是由于索引不匹配。我能以某种方式解决这个问题吗?
df.xs('aa', level=1) + df.xs('bb', level=1)
【问题讨论】:
标签: python pandas dataframe numpy multi-index