3

私はこのようなマルチレベルのデータフレーム'df'を持っています:

             col1 col2
first second
a        0    5    5
         1    5    5
         2    5    5
b        0    5    5
         1    5    5

funcそして、関数(exp:)'lambda x: x*10'をに適用したいと思いますsecond

df.groupby(level='first').second.apply(func)

結果は次のようになります。

             col1 col2
first second
a        0    5    5
         10   5    5
         20   5    5
b        0    5    5
         10   5    5

上記のコマンドが機能しsecondないのは列で.secondはないため、Pandasでは受け入れられません。

df.reset_index()blablabla ...でそれをやりたくないのですが、最後df.set_index().に1つのコマンドでそれを行うことを好みます。

4

2 に答える 2

2

インデックスのメソッドを使用してset_levels、特定のレベルの値を変更できます。したがって、与えられたものに対して、次funclevelことができます。

new_values = map(func, df.index.get_level_values(level))
df.index.set_levels(new_values, level, inplace=True)
于 2015-09-16T09:49:59.320 に答える
1

DataFrameを作成するときに、MultiIndexを次のように設定できます。

df.set_index(['first', 'second'], drop=False)

このように、インデックス列は削除されず、引き続きアクセスできますapply

于 2012-09-19T09:26:44.587 に答える