My question relates to calling .diff() within the partition of a multi index level
In the following sample the output of the first
df.diff() is
<
Just groupby by level=0 or 'Greek' if you prefer and then you can call diff on values:
level=0
In [179]: df.groupby(level=0)['values'].diff() Out[179]: Greek English alpha a NaN b 2 c 2 d 2 beta e NaN f 1 g 1 h 1 dtype: float64