Python Dataframe在1列上选择最大值,在另一列上选择其他条件。
我有一个数据帧df_group1,如下所示Python Dataframe在1列上选择最大值,在另一列上选择其他条件。,python,pandas,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
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
对于Load列中仅包含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条件不起作用
谢谢,
比尔,
阿尔达试试这个:
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
成功了!我不完全明白为什么,但谢谢你。如果我需要找到最大绝对值怎么办?df.loc[[df.loc[df['Load'].str.contains('SLU'),'FZ\n(kN')).abs().idxmax()]正确吗?@AldarBudayev Yeh,可以