Merge the first row with the column headers in a dataframe

I think you need numpy.concatenate, similar principe like cᴏʟᴅsᴘᴇᴇᴅ answer:

df.columns = np.concatenate([df.iloc[0, :2], df.columns[2:]])
df = df.iloc[1:].reset_index(drop=True)
print (df)
  Sample type Concentration     A     B    C          D          E          F  \
0       Water          9200  95.5  21.0  6.0  11.942308  64.134615  21.498560   
1       Water          9200  94.5  17.0  5.0   5.484615  63.205769  19.658560   
2       Water          9200  92.0  16.0  3.0  11.057692  62.586538  19.813120   
3       Water          4600  53.0   7.5  2.5   3.538462  35.163462   6.876207   

          G         H  
0  5.567840  1.174135  
1  4.968000  1.883444  
2  5.192480  0.564835  
3  1.641724  0.144654  

Just reassign df.columns.

df.columns = np.append(df.iloc[0, :2], df.columns[2:])

Or,

df.columns = df.iloc[0, :2].tolist() + (df.columns[2:]).tolist()

Next, skip the first row.

df = df.iloc[1:].reset_index(drop=True) 
df
  Sample type Concentration     A     B    C          D          E          F  \
0       Water          9200  95.5  21.0  6.0  11.942308  64.134615  21.498560   
1       Water          9200  94.5  17.0  5.0   5.484615  63.205769  19.658560   
2       Water          9200  92.0  16.0  3.0  11.057692  62.586538  19.813120   
3       Water          4600  53.0   7.5  2.5   3.538462  35.163462   6.876207   

          G         H  
0  5.567840  1.174135  
1  4.968000  1.883444  
2  5.192480  0.564835  
3  1.641724  0.144654 

reset_index is optional if you want a 0-index for your final output.