添加层次索引下的索引列 PANDAS/python
Add index column which is under a hierarchical index PANDAS/python
我想将 col1 设置为索引。数据框是连接的结果,我使用键创建层次索引
import pandas as pd
d = {'col1': [0, 1, 2, 3], 'col2': pd.Series([2, 3], index=[2, 3])}
df = pd.DataFrame(data=d, index=[0, 1, 2, 3])
d2 = {'col1': [0, 1, 4, 3], 'col2': pd.Series([4, 3], index=[2, 3])}
df2 = pd.DataFrame(data=d2, index=[0, 1, 2, 3])
result = pd.concat([df,df2], axis=1, keys=['PartieA', 'PARTIEB'])
print(result)
result.set_index(['col1'], append=True)
print(result)
我遇到了这个错误:
KeyError: "None of ['col1'] are in the columns"
我有这个:
PartieA PARTIEB
col1 col2 col1 col2
0 0 NaN 0 NaN
1 1 NaN 1 NaN
2 2 2.0 4 4.0
3 3 3.0 3 3.0
我要:
PartieA PARTIEB
col2 col1 col2
col1 NaN 0 NaN
0 NaN 1 NaN
1 2.0 4 4.0
2 3.0 3 3.0
Select MultiIndex
元组,然后按 DataFrame.rename_axis
:
重命名索引名称
result = result.set_index([('PartieA','col1')]).rename_axis('col1')
print(result)
PartieA PARTIEB
col2 col1 col2
col1
0 NaN 0 NaN
1 NaN 1 NaN
2 2.0 4 4.0
3 3.0 3 3.0
因为索引与原始索引相同,所以可以按元组删除列:
result = result.drop([('PartieA','col1')], axis=1).rename_axis('col1')
print(result)
PartieA PARTIEB
col2 col1 col2
col1
0 NaN 0 NaN
1 NaN 1 NaN
2 2.0 4 4.0
3 3.0 3 3.0
我想将 col1 设置为索引。数据框是连接的结果,我使用键创建层次索引
import pandas as pd
d = {'col1': [0, 1, 2, 3], 'col2': pd.Series([2, 3], index=[2, 3])}
df = pd.DataFrame(data=d, index=[0, 1, 2, 3])
d2 = {'col1': [0, 1, 4, 3], 'col2': pd.Series([4, 3], index=[2, 3])}
df2 = pd.DataFrame(data=d2, index=[0, 1, 2, 3])
result = pd.concat([df,df2], axis=1, keys=['PartieA', 'PARTIEB'])
print(result)
result.set_index(['col1'], append=True)
print(result)
我遇到了这个错误:
KeyError: "None of ['col1'] are in the columns"
我有这个:
PartieA PARTIEB
col1 col2 col1 col2
0 0 NaN 0 NaN
1 1 NaN 1 NaN
2 2 2.0 4 4.0
3 3 3.0 3 3.0
我要:
PartieA PARTIEB
col2 col1 col2
col1 NaN 0 NaN
0 NaN 1 NaN
1 2.0 4 4.0
2 3.0 3 3.0
Select MultiIndex
元组,然后按 DataFrame.rename_axis
:
result = result.set_index([('PartieA','col1')]).rename_axis('col1')
print(result)
PartieA PARTIEB
col2 col1 col2
col1
0 NaN 0 NaN
1 NaN 1 NaN
2 2.0 4 4.0
3 3.0 3 3.0
因为索引与原始索引相同,所以可以按元组删除列:
result = result.drop([('PartieA','col1')], axis=1).rename_axis('col1')
print(result)
PartieA PARTIEB
col2 col1 col2
col1
0 NaN 0 NaN
1 NaN 1 NaN
2 2.0 4 4.0
3 3.0 3 3.0