如何将同名的 header 合并为一个 header?
How to merge headers with same name into one single header?
我要将 MultiIndex 列添加到我的数据框中。
我得到了什么:
我想得到什么:
完整代码:
import pandas as pd
data = pd.DataFrame(columns=[1, 2, 3, 4, 5])
dictionary = {1: 'row1', 2: 'row2', 3: 'row2', 4: 'row2', 5: 'row3'}
dictionary1 = {1: 'row4', 2: 'row5', 3: 'row6', 4: 'row7', 5: 'row3'}
dictionary2 = {1: 5, 2: 4, 3: 3, 4: 2, 5: 1}
data = data.append(dictionary, ignore_index=True)
data = data.append(dictionary1, ignore_index=True)
data = data.append(dictionary2, ignore_index=True)
data = data.append(dictionary2, ignore_index=True)
data = data.append(dictionary2, ignore_index=True)
我做了什么:
arrays = [['row1', 'row2', 'row2', 'row2', 'row3'],
['row4', 'row5', 'row6', 'row7', 'row3']]
data.columns = pd.MultiIndex.from_arrays(arrays)
data
首先,请注意,如果您要处理数据,隐藏标签可能不是一个好主意。这将阻止您按逻辑选择数据。
就是说,如果你真的想这样做,你可以将 MultiIndex 转换为 DataFrame 并使用 duplicated
到 mask
重复的标签:
idx = data.columns.to_frame()
data.columns = pd.MultiIndex.from_frame(idx.mask(idx.apply(pd.Series.duplicated,
axis=1)
).fillna(''),
names=[None]*data.columns.nlevels)
输出:
row1 row2 row3
row4 row5 row6 row7
0 row1 row2 row2 row2 row3
1 row4 row5 row6 row7 row3
2 5 4 3 2 1
3 5 4 3 2 1
4 5 4 3 2 1
我要将 MultiIndex 列添加到我的数据框中。 我得到了什么:
我想得到什么:
完整代码:
import pandas as pd
data = pd.DataFrame(columns=[1, 2, 3, 4, 5])
dictionary = {1: 'row1', 2: 'row2', 3: 'row2', 4: 'row2', 5: 'row3'}
dictionary1 = {1: 'row4', 2: 'row5', 3: 'row6', 4: 'row7', 5: 'row3'}
dictionary2 = {1: 5, 2: 4, 3: 3, 4: 2, 5: 1}
data = data.append(dictionary, ignore_index=True)
data = data.append(dictionary1, ignore_index=True)
data = data.append(dictionary2, ignore_index=True)
data = data.append(dictionary2, ignore_index=True)
data = data.append(dictionary2, ignore_index=True)
我做了什么:
arrays = [['row1', 'row2', 'row2', 'row2', 'row3'],
['row4', 'row5', 'row6', 'row7', 'row3']]
data.columns = pd.MultiIndex.from_arrays(arrays)
data
首先,请注意,如果您要处理数据,隐藏标签可能不是一个好主意。这将阻止您按逻辑选择数据。
就是说,如果你真的想这样做,你可以将 MultiIndex 转换为 DataFrame 并使用 duplicated
到 mask
重复的标签:
idx = data.columns.to_frame()
data.columns = pd.MultiIndex.from_frame(idx.mask(idx.apply(pd.Series.duplicated,
axis=1)
).fillna(''),
names=[None]*data.columns.nlevels)
输出:
row1 row2 row3
row4 row5 row6 row7
0 row1 row2 row2 row2 row3
1 row4 row5 row6 row7 row3
2 5 4 3 2 1
3 5 4 3 2 1
4 5 4 3 2 1