【发布时间】:2022-01-03 02:37:22
【问题描述】:
当我们提供axis=1 时,我对groupby 的行为感到困惑。例如:
from pandas import DataFrame
junk_df = DataFrame(data = {"c1": [1,1,2,2,3,3],
"c2": [1,1,3,3,5,5],
"c3": [2,2,3,3,4,4]},
index=["r1", "r2", "r3", "r3", "r5", "r6"])
print(junk_df)
c1 c2 c3
r1 1 1 2
r2 1 1 2
r3 2 3 3
r3 2 3 3
r5 3 5 4
r6 3 5 4
现在是groupby 和axis=0
print(junk_df.groupby("c1", axis=0).mean())
通过c1 中的值给出预期的行聚合
c2 c3
c1
1 1 2
2 3 3
3 5 4
但是将groupby 切换到聚合列而不是行似乎会引发KeyError。
print(junk_df.groupby("r1", axis=1).mean())
给予
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-30-f6b95242fc39> in <module>
----> 1 print(junk_df.groupby("r1", axis=1).mean())
~/opt/miniconda3/lib/python3.8/site-packages/pandas/core/frame.py in groupby(self, by, axis, level, as_index, sort, group_keys, squeeze, observed, dropna)
6509 axis = self._get_axis_number(axis)
6510
-> 6511 return DataFrameGroupBy(
6512 obj=self,
6513 keys=by,
~/opt/miniconda3/lib/python3.8/site-packages/pandas/core/groupby/groupby.py in __init__(self, obj, keys, axis, level, grouper, exclusions, selection, as_index, sort, group_keys, squeeze, observed, mutated, dropna)
523 from pandas.core.groupby.grouper import get_grouper
524
--> 525 grouper, exclusions, obj = get_grouper(
526 obj,
527 keys,
~/opt/miniconda3/lib/python3.8/site-packages/pandas/core/groupby/grouper.py in get_grouper(obj, key, axis, level, sort, observed, mutated, validate, dropna)
779 in_axis, name, level, gpr = False, None, gpr, None
780 else:
--> 781 raise KeyError(gpr)
782 elif isinstance(gpr, Grouper) and gpr.key is not None:
783 # Add key to exclusions
KeyError: 'r1'
有人知道如何按行中的值聚合列吗?
【问题讨论】:
-
你有两个
r3行。 -
junk_df.T.groupby("r1").mean()
标签: python pandas dataframe pandas-groupby keyerror