Для первого вопроса вы должны использовать groupby (df.index_col) вместо groupby (df.index)
Во-вторых, я не уверен, почему вы не можете сохранить «», это числовое?
Я высмеиваю некоторые данные, как показано ниже:
import pandas as pd
import numpy as np
d = [
{'ticker':'A', 'type':'M', 'strike':'','price':32},
{'ticker':'B', 'type':'F', 'strike':100,'price':3.5},
{'ticker':'C', 'type':'F', 'strike':'', 'price':2.5}
]
df = pd.DataFrame(d)
print df
#dgroup = df.groupby(['ticker', 'type']).agg({'price':np.mean})
df.index_col = ['ticker', 'type', 'strike']
dgroup = df.groupby(df.index_col).agg({'price':np.mean})
#dgroup = df.groupby(df.index).agg({'price':np.mean})
print dgroup
print type(dgroup)
dgroup.to_csv('check.csv')
вывод в check.csv:
ticker,type,strike,price
A,M,,32.0
B,F,100,3.5
C,F,,2.5