我有具有相同列名的数据框,所以我将它们合并
wave num stlines
0 4050.32 3.0 0.282690
1 4208.98 5.5 0.490580
2 4374.94 9.0 0.714830
3 4379.74 9.0 0.314040
4 4398.01 14.0 0.504150
5 4502.21 8.0 0.562780
wave num stlines
0 4050.32 3 0.28616
1 4208.98 6 0.48781
2 4374.94 9 0.71548
3 4379.74 10 0.31338
4 4398.01 15 0.49950
5 4502.21 9 0.56362
wave num stlines
0 4050.32 3.0 0.282690
1 4208.98 7.5 0.490580
2 4374.94 9.0 0.714830
3 4379.74 9.0 0.314040
4 4398.01 14.0 0.504150
5 4502.21 8.0 0.562780
合并后,结果数据帧如下所示:
df=pd.merge(df1,df2,df3, on='wave',axis=1,join='inner')
wave num_x stlines_x num_x stlines_x num_x stlines_x
0 4050.32 3.0 0.282690 3 0.28616 3.0 0.282690
1 4208.98 5.5 0.490580 6 0.48781 5.5 0.490580
2 4374.94 9.0 0.714830 9 0.71548 9.0 0.714830
3 4379.74 9.0 0.314040 10 0.31338 9.0 0.314040
4 4398.01 14.0 0.504150 15 0.49950 14.0 0.504150
5 4502.21 8.0 0.562780 9 0.56362 8.0 0.562780
因此,现在如果我想num_x
对任何行取所有库仑的值和名称。那我怎样才能得到它们呢?
我可以使用以下命令获取具有相同名称的完整列
df.num_x
num num num
0 3 3.0 3
1 5.5 6 7.5
2 9 9.0 9
3 10 14.0 10
4 15 8.0 15
5 9 3.0 9
但是当我尝试对单行“ 1”执行相同操作时,它不起作用:
df.num_x['1']
所需的结果应如下所示:
num num num
1 5.5 6 7.5
我如何获得它们?
您需要DataFrame.loc
:
df.loc[1, 'num_x']
在大熊猫中,相同的列名是有问题的,因为第一,第二不容易理解num_x
,所以建议创建MultiIndex
:
dfs = [df1, df2, df3]
df = pd.concat([x.set_index('wave') for x in dfs],
axis=1,
keys=['df1','df2','df3'], join='inner')
print (df)
df1 df2 df3
num stlines num stlines num stlines
wave
4050.32 3.0 0.28269 3 0.28616 3.0 0.28269
4208.98 5.5 0.49058 6 0.48781 7.5 0.49058
4374.94 9.0 0.71483 9 0.71548 9.0 0.71483
4379.74 9.0 0.31404 10 0.31338 9.0 0.31404
4398.01 14.0 0.50415 15 0.49950 14.0 0.50415
4502.21 8.0 0.56278 9 0.56362 8.0 0.56278
然后xs
用于选择:
df1 = df.xs('num', axis=1, level=1)
print (df1)
df1 df2 df3
wave
4050.32 3.0 3 3.0
4208.98 5.5 6 7.5
4374.94 9.0 9 9.0
4379.74 9.0 10 9.0
4398.01 14.0 15 14.0
4502.21 8.0 9 8.0
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句