[英]Pandas pivot_table and categorical variables as values
我对pivot_table
如何与用作值的分类变量一起工作感到困惑。
我确实在网上搜索了 pandas pivot_table 分类变量,我确实找到了一些信息,但没有什么能真正解释我为什么看到我所看到的。
测试数据框:
test_df = pd.DataFrame.from_dict({'val': ['pass','pass','fail','pass'], "col_a": ['a','b','a','b'], "col_b": ['x','x','y','y']})
test_df
val col_a col_b
0 pass a x
1 pass b x
2 fail a y
3 pass b y
然后我继续重塑它。 我来自 R/data.tables 这将是一个演员。
test_df.pivot_table(index = "col_a", columns = "col_b", values = 'val')
我明白了:
/tmp/ipykernel_153608/3910840210.py:1: FutureWarning:
Dropping invalid columns in DataFrameGroupBy.mean is deprecated. In a future version, a TypeError will be raised. Before calling .mean, select only columns which should be valid for the function.
col_b
col_a
a
b
空结果,但带有索引。 在进行了一百万次测试(在我的真实对象上,例如测试是否存在重复值、NA 等)之后,这似乎有效:
test_df.pivot_table(index = "col_a", columns = "col_b", values = 'val', aggfunc=lambda x: x)
col_b x y
col_a
a pass fail
b pass pass
这就是我想要的。 除了“老兄,如果它有效,请接受它并快乐”,有谁知道我为什么要放置聚合功能?
存在一个pivot_table
以聚合数据。 如果您只想pivot
数据而不是聚合它,请使用pivot
:
test_df.pivot(index='col_a', columns='col_b')
val
col_b x y
col_a
a pass fail
b pass pass
在您的实际数据中,如果有重复,那么您将需要聚合数据并将pivot_table
与first()
或其他东西一起使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.