Pandas.Dataframe在第一列选择最大值,在另一列选择另一个条件。

时间:2018-08-30 21:18:14

标签: python pandas

我有一个数据框df_group1如下

     Node   Load  FX\n(kN)  FY\n(kN) FZ\n(kN)  MX\n(kN*m)  MY\n(kN*m)
0      1   SLU_1  -28.5908  -6.19009  609.036   46.742822 -186.668087
2      3   SLU_2  -52.7285  -6.19101  805.478   46.751259 -269.103795
4      5   SLU_3  -48.9524  -6.19284  634.366   46.768148 -186.232878
5      6   SLE_4  -6.79594  -10.0551  797.148   72.094493  -82.793428
6      7   SLE_1  -41.1434   -6.1956  817.653   46.793519 -218.747276
16     1   SLV_2  -7.72079  -17.6635  605.985  130.651786 -105.285847
18     3   SLV_3  -10.9175  -14.6851  808.529  124.897285 -108.000190
对于在“装入”列中仅包含 SLU 的行,

我需要获得整个行,其最大值为 FZ \ n(kN)

我正在尝试将以下两个条件组合在一起,但是会出现一个箭头:

df_group1_SLU = df_group1.loc[(df_group1['Load'].str.contains('SLU')) & (df_group1['FZ\n(kN)'].astype(float).idxmax())]

但是它给我的数据框只有在Load列中所有包含SLU的行。 我究竟做错了什么?为什么idxmax条件不起作用?

谢谢, BR 阿尔达(Aldar)

1 个答案:

答案 0 :(得分:0)

尝试一下:

df.loc[[df.loc[df['Load'].str.contains('SLU'), 'FZ\n(kN)'].idxmax()]]

[输出]

   id  Node   Load  FX\n(kN)  FY\n(kN)  FZ\n(kN)  MX\n(kN*m)  MY\n(kN*m)
1   2     3  SLU_2  -52.7285  -6.19101   805.478   46.751259 -269.103795