恢复在pandas df中用作索引的列

时间:2019-07-17 15:25:16

标签: python-3.x pandas dataframe

我试图通过一个公共列将两个数据框连接起来

import pandas as pd
df1 = pd.DataFrame({'Well_n': ['A', 'B', 'C', 'D'],
                'Qo_rate': [200, 150, 170, 0],
                'year': [2001, 2002, 2003, 2004]})
df2 = pd.DataFrame({'Well_n': ['A', 'C', 'B', 'D'],
                'Well_ECL': ['P1', 'P3', 'P2', 'P4']})
df1.set_index('Well_n',inplace=True)
df2.set_index('Well_n',inplace=True)
joined = df1.join(df2,on='Well_n')
print(joined)

我得到的输出是:

         Qo_rate  year Well_ECL
Well_n                        
A           200  2001       P1
B           150  2002       P2
C           170  2003       P3
D             0  2004       P4

但是,当我尝试按年份索引此新数据框时,我得到了:

joined.set_index('year')

      Qo_rate Well_ECL
year
2001      200       P1
2002      150       P2
2003      170       P3
2004        0       P4

'Well_n'消失。我尝试优化与set_index方法相关的内容,但是即使使用了drop=False,我仍然得到完全相同的结果。 我想要的输出是:

      Qo_rate Well_ECL  Well_n
year
2001      200       P1   A
2002      150       P2
2003      170       P3
2004        0       P4

1 个答案:

答案 0 :(得分:1)

首先在Well_n上合并两个数据框,然后在set_index('year')

df1 = pd.DataFrame({'Well_n': ['A', 'B', 'C', 'D'],
                'Qo_rate': [200, 150, 170, 0],
                'year': [2001, 2002, 2003, 2004]})
df2 = pd.DataFrame({'Well_n': ['A', 'C', 'B', 'D'],
                'Well_ECL': ['P1', 'P3', 'P2', 'P4']})
res = pd.merge(df1,df2,on=['Well_n'],how='inner')
res.set_index('year',inplace=True)

     Well_n Qo_rate Well_ECL
year            
2001    A   200       P1
2002    B   150       P2
2003    C   170       P3
2004    D   0         P4