我试图通过一个公共列将两个数据框连接起来
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
答案 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