41

I have a Pandas DataFrame with a mix of screen names, tweets, fav's etc. I want find the max value of 'favcount' (which i have already done) and also return the screen name of that 'tweet'

df = pd.DataFrame()
df['timestamp'] = timestamp
df['sn'] = sn
df['text'] = text
df['favcount'] = fav_count


print df
print '------'
print df['favcount'].max()

I cant seem to find anything on this, can anyone help guide me in the right direction?

jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252
mGarsteck
  • 671
  • 2
  • 6
  • 16

3 Answers3

80

Use argmax() idxmax() to get the index of the max value. Then you can use loc

df.loc[df['favcount'].idxmax(), 'sn']

Edit: argmax() is now deprecated, switching for idxmax()

tpvasconcelos
  • 671
  • 7
  • 19
Steven G
  • 16,244
  • 8
  • 53
  • 77
20

I think you need idxmax - get index of max value of favcount and then select value in column sn by loc:

df = pd.DataFrame({'favcount':[1,2,3], 'sn':['a','b','c']})

print (df)
   favcount sn
0         1  a
1         2  b
2         3  c

print (df.favcount.idxmax())
2

print (df.loc[df.favcount.idxmax()])
favcount    3
sn          c
Name: 2, dtype: object

print (df.loc[df.favcount.idxmax(), 'sn'])
c
jezrael
  • 822,522
  • 95
  • 1,334
  • 1,252
0

By using same df as above,

# python code

df = pd.DataFrame({'favcount':[1,2,3], 'sn':['a','b','c']})

print (df) favcount sn 0 1 a 1 2 b 2 3 c

## You can use max() print(df[df.favcount.max() == df['favcount']])

favcount sn 2 3 c

## If you need specific column you can select it print(df[df.favcount.max() == df['favcount']].sn)

2 c

mcarrasco
  • 1
  • 1