繁体   English   中英

Pandas pivot_table 和分类变量作为值

[英]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_tablefirst()或其他东西一起使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM