【发布时间】:2021-04-23 17:31:35
【问题描述】:
我正在旋转数据框以查看组内的唯一值计数。我知道一些分组列有空值,我想包括它们。我可以使用.groupby([...], dropna=False) 轻松完成此操作,但我想使用.pivot_table,因为它可以在一个函数中处理取消堆叠、空值填充、总计等。
样本数据(取自python pandas: pivot_table silently drops indices with nans)
a = [['a', 'b', 12, 12, 12], ['a', np.nan, 12.3, 233., 12], ['b', 'a', 123.23, 123, 1], ['a', 'b', 1, 1, 1.]]
df = pd.DataFrame(a, columns=['a', 'b', 'c', 'd', 'e'])
print(df)
a b c d e
0 a b 12.00 12.0 12.0
1 a NaN 12.30 233.0 12.0
2 b a 123.23 123.0 1.0
3 a b 1.00 1.0 1.0
使用.groupby 获得想要的结果
using_groupby = df.groupby([
"a",
"b"
], dropna=False).c.nunique().unstack(fill_value=0)
print(using_groupby)
b a b NaN
a
a 0 2 1
b 1 0 0
我预期的代码使用.pivot_table 会产生类似的结果
using_pivot_table = df.pivot_table(
index="a",
columns="b",
values="c",
aggfunc="nunique",
fill_value=0,
dropna=False
)
print(using_pivot_table)
b a b
a
a 0 2
b 1 0
问题
这是pivot_table 函数中的错误吗?还是我不了解dropna 参数的用法?
版本信息
- Python - 3.8.5
- 熊猫 - 1.1.3
【问题讨论】:
标签: python pandas dataframe parameters pivot-table