2016-08-24 6 views
2

におけるマルチインデックスのデータフレーム内の重複するサブインデックスを変更するこんにちは、私は以下のようにデータフレームのスライスを持っている:パンダ

|   |   | Lemon | Orange | 
|------------|----------|-------|--------| 
| Date  | Location |  |  | 
| 01/01/2016 | Park  | 10 | 20  | 
| 01/01/2016 | Beach | 5  | 15  | 
| 01/01/2016 | Park  | 2  | 4  | 
| 02/01/2016 | Park  | 8  | 3  | 

あなたがそこに(01/01/2016, Park)の重複があると3番目のエントリは、後にホワイトスペースを持っているので、理由は見ることができるように公園のk。限られたインデックス選択スキルで、空白のエラーを避けるために、Location列全体でrstrip(" ")を実行するのが難しいです。

最終的にgroupby機能を使用して、Parkと他の場所の間のデータを視覚化したいと考えています。現時点では、"Park""Park "は2つの異なる場所です。

提案がありますか?

答えて

2

インデックスは不変なので、indexラベルを変更する場合は、新しいindex(ありがとうIanS)を設定する必要があります。

あなたはget_level_valuesによって、第2レベル選択にstr.stripを使用することができます。

new_index = list(zip(df.index.get_level_values('Date'), 
        df.index.get_level_values('Location').str.strip())) 

df.index = pd.MultiIndex.from_tuples(new_index, names = df.index.names) 

print (df.index) 
MultiIndex(levels=[[2016-01-01 00:00:00, 2016-02-01 00:00:00], ['Beach', 'Park']], 
      labels=[[0, 0, 0, 1], [1, 0, 1, 1]], 
      names=['Date', 'Location']) 

あなたがrstripを使いたい場合は、str.rstripstr.stripを交換してください。

+0

インデックスは不変なので、インデックスラベルを変更する場合は、新しいインデックスを設定する必要があります。 – IanS

+1

正確には、私はそれを答えに加えます。ありがとう、IanS。 – jezrael