実現したいこと
pandas の MultiIndexの階層ごとの集計において"level,,を正しく機能させたい。
前提
3列3行のデータを作成し、インデックスとカラムを設定
hier_df= DataFrame(
np.arange(9).reshape((3,3)),
index = [
['a','a','b'],
[1,2,2]
],
columns = [
['Osaka','Tokyo','Osaka'],
['Blue','Red','Red']
]
)
hier_df
indexに名前を付ける
hier_df.index.names =['key1','key2']
カラムに名前を付ける
hier_df.columns.names =['city','color']
hier_df
階層ごとの要約統計量:行合計
hier_df.sum(level = 'key2', axis = 0)
PandasでのMultiIndexでインデックスを軸とした集計のため上記のコードを試したところ以下のようなエラーが出ました。
この集計において "level,, を使用できるようにするにはどうすれば良いでしょうか。
アドバイスいただけますと幸いです。
発生している問題・エラーメッセージ
TypeError Traceback (most recent call last)
Cell In[5], line 2
1 # 階層ごとの要約統計量:行合計
----> 2 hier_df.sum(level = 'key2', axis = 0)
File ~/anaconda3/lib/python3.11/site-packages/pandas/core/generic.py:11512, in NDFrame._add_numeric_operations.<locals>.sum(self, axis, skipna, numeric_only, min_count, **kwargs)
11493 @doc( # type: ignore[misc]
11494 _num_doc,
11495 desc="Return the sum of the values over the requested axis.\n\n"
(...)
11510 **kwargs,
11511 ):
11512 return NDFrame.sum(self, axis, skipna, numeric_only, min_count, **kwargs)
File ~/anaconda3/lib/python3.11/site-packages/pandas/core/generic.py:11280, in NDFrame.sum(self, axis, skipna, numeric_only, min_count, **kwargs)
11272 def sum(
11273 self,
11274 axis: Axis | None = None,
(...)
11278 **kwargs,
11279 ):
11280 return self._min_count_stat_function(
11281 "sum", nanops.nansum, axis, skipna, numeric_only, min_count, **kwargs
11282 )
File ~/anaconda3/lib/python3.11/site-packages/pandas/core/generic.py:11252, in NDFrame._min_count_stat_function(self, name, func, axis, skipna, numeric_only, min_count, **kwargs)
11240 @final
11241 def _min_count_stat_function(
11242 self,
(...)
11249 **kwargs,
11250 ):
11251 if name == "sum":
11252 nv.validate_sum((), kwargs)
11253 elif name == "prod":
11254 nv.validate_prod((), kwargs)
File ~/anaconda3/lib/python3.11/site-packages/pandas/compat/numpy/function.py:82, in CompatValidator.call(self, args, kwargs, fname, max_fname_arg_count, method)
80 validate_kwargs(fname, kwargs, self.defaults)
81 elif method == "both":
---> 82 validate_args_and_kwargs(
83 fname, args, kwargs, max_fname_arg_count, self.defaults
84 )
85 else:
86 raise ValueError(f"invalid validation method '{method}'")
File ~/anaconda3/lib/python3.11/site-packages/pandas/util/_validators.py:221, in validate_args_and_kwargs(fname, args, kwargs, max_fname_arg_count, compat_args)
216 raise TypeError(
217 f"{fname}() got multiple values for keyword argument '{key}'"
218 )
220 kwargs.update(args_dict)
--> 221 validate_kwargs(fname, kwargs, compat_args)
File ~/anaconda3/lib/python3.11/site-packages/pandas/util/_validators.py:162, in validate_kwargs(fname, kwargs, compat_args)
140 """
141 Checks whether parameters passed to the **kwargs argument in a
142 function fname
are valid parameters as specified in *compat_args
(...)
159 map to the default values specified in compat_args
160 """
161 kwds = kwargs.copy()
--> 162 _check_for_invalid_keys(fname, kwargs, compat_args)
163 _check_for_default_values(fname, kwds, compat_args)
File ~/anaconda3/lib/python3.11/site-packages/pandas/util/_validators.py:136, in _check_for_invalid_keys(fname, kwargs, compat_args)
134 if diff:
135 bad_arg = list(diff)[0]
--> 136 raise TypeError(f"{fname}() got an unexpected keyword argument '{bad_arg}'")
TypeError: sum() got an unexpected keyword argument 'level'
該当のソースコード
階層ごとの要約統計量:行合計
hier_df.sum(level = 'key2', axis = 0)
試したこと
'key2, の代わりにインデックス数である1や2(ex. level = 1 or level = 2)を代わりに使用しましたが、
同様に sum() got an unexpected keyword argument 'level' のエラーが発生しました。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/12/26 18:13
2023/12/27 01:01