result = df.groupby('cat')['num'].apply(list)
print (result)
cat
type1 [164, 172, 168, 177, 156, 195]
type2 [178, 191, 197, 182, 185, 177]
type3 [175, 193, 178, 171, 163, 176]
type4 [155, 166, 149, 164, 170, 168]
Name: num, dtype: object
F, p = scipy.stats.f_oneway(*result)
print (F)
5.406342913776015
print (p)
0.0068759477547351