尽管我将参数as_index设置为True,熊猫。DataFrame.groupby.nunique(( 将我分组的列保留在结果中。
熊猫版本为:0.24.1
df = pd.DataFrame(
{'a': [1, 1, 2, 3, 2],
'b': [1, 2, 3, 4, 4]}
)
df.groupby('a', as_index=True).nunique()
输出为:
# a b
# a
# 1 1 2
# 2 1 2
# 3 1 1
我期望:
# b
# a
# 1 2
# 2 2
# 3 1
作为按预期运行的反例:
df.groupby('a', as_index=True).max()
结果在:
# b
# a
# 1 2
# 2 4
# 3 4
如果你运行[print(df.to_string() + 'n') for i, df in df.groupby('a', as_index=True)]
,你会被打印出来:
a b
0 1 1
1 1 2
a b
2 2 3
4 2 4
a b
3 3 4
a
列未设置为每个数据框组的索引。它是 groupby 的输出,当as_index=True
时将其索引设置为组索引(这也是默认值(,而不是数据框组本身。