在 DataFrame 的开头添加一个 MultiIndex 摘要列
Adding a MultiIndex Summary Column at the Beginning of a DataFrame
如果我有一个 Dataframe 并且我想在开头插入一个摘要列,我可以 运行
df.insert(0, 'Average', df.mean(axis='columns'))
假设我有一个 MultiIndexed 数据框
df = pd.DataFrame()
for l1 in ('a', 'b'):
for l2 in ('one', 'two'):
df[l1, l2] = np.random.random(size=5)
df.columns = pd.MultiIndex.from_tuples(df.columns, names=['L1', 'L2'])
L1 a b
L2 one two one two
0 0.585409 0.563870 0.535770 0.868020
1 0.404546 0.102884 0.254945 0.362751
2 0.475362 0.601632 0.476761 0.665126
3 0.926288 0.615655 0.257977 0.668778
4 0.509069 0.706685 0.355842 0.891862
如何将所有 one
列和所有 two
列的平均值添加到此 DataFrame 的前两列并将其命名为 'Average'
?
编辑:
预期输出为 df.mean(level=1, axis=1)
但插入到具有 L1 标签 'Average'
的帧的前两列中。我希望以下方法有效:
df.insert(0, 'Average', df.mean(level=1, axis=1))
IIUC,您只需要 groupby
计算平均值,然后对结果系列的列做一些工作:
s = df.groupby(level=1, axis=1).mean()
s.columns = pd.MultiIndex.from_product([['Average'], s.columns])
pd.concat([s, df], 1)
Average a b
one two one two one two
0 0.517939 0.713116 0.531990 0.578338 0.503889 0.847894
1 0.571197 0.676809 0.698986 0.425227 0.443409 0.928391
2 0.689653 0.399053 0.843179 0.069174 0.536126 0.728931
3 0.288367 0.197891 0.026974 0.026774 0.549761 0.369009
4 0.449904 0.590919 0.372560 0.556332 0.527247 0.625506
如果我有一个 Dataframe 并且我想在开头插入一个摘要列,我可以 运行
df.insert(0, 'Average', df.mean(axis='columns'))
假设我有一个 MultiIndexed 数据框
df = pd.DataFrame()
for l1 in ('a', 'b'):
for l2 in ('one', 'two'):
df[l1, l2] = np.random.random(size=5)
df.columns = pd.MultiIndex.from_tuples(df.columns, names=['L1', 'L2'])
L1 a b
L2 one two one two
0 0.585409 0.563870 0.535770 0.868020
1 0.404546 0.102884 0.254945 0.362751
2 0.475362 0.601632 0.476761 0.665126
3 0.926288 0.615655 0.257977 0.668778
4 0.509069 0.706685 0.355842 0.891862
如何将所有 one
列和所有 two
列的平均值添加到此 DataFrame 的前两列并将其命名为 'Average'
?
编辑:
预期输出为 df.mean(level=1, axis=1)
但插入到具有 L1 标签 'Average'
的帧的前两列中。我希望以下方法有效:
df.insert(0, 'Average', df.mean(level=1, axis=1))
IIUC,您只需要 groupby
计算平均值,然后对结果系列的列做一些工作:
s = df.groupby(level=1, axis=1).mean()
s.columns = pd.MultiIndex.from_product([['Average'], s.columns])
pd.concat([s, df], 1)
Average a b
one two one two one two
0 0.517939 0.713116 0.531990 0.578338 0.503889 0.847894
1 0.571197 0.676809 0.698986 0.425227 0.443409 0.928391
2 0.689653 0.399053 0.843179 0.069174 0.536126 0.728931
3 0.288367 0.197891 0.026974 0.026774 0.549761 0.369009
4 0.449904 0.590919 0.372560 0.556332 0.527247 0.625506