繁体   English   中英

如何在熊猫中合并多索引

[英]how to merge multi index in pandas

test1.csv

"P","E","DT02","DT03"

1, 4, 20020111, 20121222

2, 5, 20021111, 20141222

3, 4, 20021112, 20151222

test2.csv

"P", "DT02", "dd"

1, 20020111, 1

2, 20021111, 1

3, 20021113, 0

码:

df1 = pd.read_csv('test1.csv')

df2 = pd.read_csv('test2.csv')

mulidx = pd.MultiIndex.from_arrays([['info'] * 2 + ['2002', '2003'],["P", "E", "2002", "2003"]])

df1.columns = mulidx

print(df1)
  info 2002 2003 PE DT02 DT03 0 1 4 20020111 20121222 1 2 5 20021111 20141222 2 3 4 20021112 20151222 
mulidx2 = pd.MultiIndex.from_arrays([['info']+ ['2002']*2,["P", "DT02", "DTH"]])

df2.columns = mulidx2

print(df2)
  info 2002 P DT02 DTH 0 1 20020111 1 1 2 20021111 1 2 3 20021113 0 

我想合并

  info 2002 2003 PE DT02 DTH DT03 0 1 4 20020111 1 20121222 1 2 5 20021111 1 20141222 2 3 4 20021112 NAN 20151222 

如何在熊猫中合并多索引?

一种方法是展平多索引列,合并展平列名称并将其扩展回multiindex:

df1.columns = df1.columns.map('|'.join)

df2.columns= df2.columns.map('|'.join)

df_out = df1.merge(df2, on='info|P')

df_out.columns = df_out.columns.str.split('|',expand=True)

df_out

输出:

  info         2002      2003      2002    
     P  E    DT02_x      DT03    DT02_y DTH
0    1  4  20020111  20121222  20020111   1
1    2  5  20021111  20141222  20021111   1
2    3  4  20021112  20151222  20021113   0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM