2016-10-09 10 views
0

私はこのようになりますパンダのデータフレーム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. はなく、直接それをresetingのインデックスを設定して行うことが2つあります。このよう

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

または

df1.set_index(pd.Index((x[0] for x in df1.index))) 
関連する問題