我知道如何使用.loc和多个条件来选择数据,就像这样:
df.loc[(df['A'] == True)&(df['B'] == 'Tuesday')]
但是从结果来看,我无法弄清楚如何显示对应于另一列数字“ C”的最小值(或最大值)的整行。我该怎么做?
答案 0 :(得分:2)
使用此:
df2 = df.loc[(df['A'] == True)&(df['B'] == 'Tuesday')]
df2.loc[df2.C == df2.C.min(), :]
答案 1 :(得分:0)
您可以使用idxmin
或idxmax
函数。
Docs for the idxmin function:“返回最小值的行标签。如果多个值等于最小值,则返回具有该值的第一行标签。”
所以,如果你
df.loc[((df['A'] == True) & (df['B'] == 'Tuesday')).idxmix()]
,这将返回具有C列最小值的行。
答案 2 :(得分:0)
使用此:
对于列:
Context
对于行:
df.loc[(df['A'] == True)&(df['B'] == 'Tuesday')].apply(max, axis=0)
答案 3 :(得分:0)
最简单的选择:
df = pd.DataFrame({
'A': [True,False,True,True],
'B': ['Sun', 'Mon', 'Tue', 'Tue'],
'C': [1,4,5,1],
'D': [10,20,30,40]})
print(df.query(""" A == True and B == 'Tue' and C == C.min() """))
A B C D
3 True Tue 1 40