2016-10-09 2 views
0

У меня есть панд dataframe df который выглядит следующим образом:Получить первую букву индекса?

  population 
n 
France  66.03 
Italy  59.83 

Я хочу, чтобы получить первую букву метки индекса, для каждой строки, и установить его в качестве нового столбца, так что я могу начать делать анализ с этим. Как я могу это сделать?

Прямо сейчас я делаю это:

def get_first_letter(row): 
    return row[0] 
df1 = df.reset_index() 
df1.first_letter = df1.n.apply(get_first_letter) 

Есть ли лучший способ?

ответ

0

Вы можете использовать get_level_values method, чтобы получить метку индекса. Затем use str[0] для получения первой буквы:

In [29]: df = pd.DataFrame({'population':[66.03,59.83]}, index=pd.Series(['France','Italy'], name='n')); df 
Out[29]: 
     population 
n     
France  66.03 
Italy  59.83 

In [30]: df['first_letter'] = df.index.get_level_values('n').str[0]; df 
Out[30]: 
     population first_letter 
n        
France  66.03   F 
Italy  59.83   I 
0

Я думаю, что нет ничего плохого в том, что вы делаете. Есть две вещи, которые вы можете сделать по-другому

  1. использование лямбда или список понимание вместо имени функции
  2. установить индекс непосредственно вместо переустановку его.

Как это:

df1.n.apply(lambda x: x[0]) 

или

df1.set_index(pd.Index((x[0] for x in df1.index)))