Pandas groupby 并将函数应用于数字列

Posted

技术标签:

【中文标题】Pandas groupby 并将函数应用于数字列【英文标题】:Pandas groupby and apply function to numeric columns 【发布时间】:2019-02-16 03:59:58 【问题描述】:

我正在尝试将 shapiro-wilk 测试应用于我的数据框,该数据框根据两个分类变量分为几组:

df.groupby(['category 1', 'category 2']).apply(stats.shapiro)

这会导致一个错误,指出它无法将字符串转换为浮点数。那里唯一的非数字列是我用来拆分数据框的两个类别。

我该如何解决?

编辑:

示例数据:

cat1    cat2    purchases    sales
A       B       20           25
C       A       30           45
B       B       35           20
A       A       40           50

我想获得每个数字列的 shapiro 统计数据和 p 值,而不必编写每个类别的所有可能组合。

【问题讨论】:

另外,我不能删除非数字列,因为它们被用来分割数据框 尝试以下操作:df.groupby(['cat1', 'cat2'])[['purchases', 'sales']].apply(stats.shapiro) 【参考方案1】:

这应该可行:

df.groupby(['cat1', 'cat2'])['purchases','sales'].apply(stats.shapiro)

【讨论】:

以上是关于Pandas groupby 并将函数应用于数字列的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 将 kruskal-wallis 应用于数字列

将函数应用于两列并将输出映射到新列[重复]

pandas groupby 应用于多个列以生成新列

如何正确使用带有应用功能的熊猫 groupby 来解决副作用? (第一组申请两次)

在 Pandas 中使用 group by 时如何将“first”和“last”函数应用于列?

如何在 pandas groupby 对象上应用函数并将结果保存回父数据框的新列?