微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

混合使用的列的聚合 - 熊猫

如何解决混合使用的列的聚合 - 熊猫

我有一个 Pandas 数据框,其中有两个对象列 FEATURE 和 FEATURE_VALUE,分别代表特征的名称和特征的值。虽然 FEATURE_VALUE 是一个对象列,但实际上它包含类型 int、float 和 str。我想基于 FEATURE 对 FEATURE_VALUE 进行聚合,但是 str 格式中的 int 和 float 值的行为与 int 和 float 格式中的行为不同。我想知道是否有一种方法可以编写 labmda 函数或可以根据聚合时 FEATURE 的值将 FEATURE_VALUE 的值转换为浮点数的函数,而不是首先生成单独转换的列。 在下面的例子中,A 和 C 的 FEATURE 值是数值,而 FEATURE B 是字符串值。

import pandas as pd
d = {'FEATURE': ['A','B','A','C','C'],'FEATURE_VALUE': ['9','2','11','G',' 100','9']}
df = pd.DataFrame(data=d)

  FEATURE FEATURE_VALUE
0       A             9
1       B             A
2       A             2
3       A            11
4       B             G
5       C           100
6       C             9

    #desired_output after aggregate:
df_agg
FEATURE  MIN_FEATURE_VALUE  MAX_FEATURE_VALUE
   A             2                 11
   B             A                  G
   C             9                100

请注意,在 FEATURE_VALUE 上使用正常的最小/最大聚合不起作用,因为 '100' > '9' 是假的 但 100 > 9 为真

我有超过 200 个独特的 FEATURE 值,我知道哪些特征是浮点/整数,哪些是字符串。有没有办法在聚合过程中一次性完成数据转换?

解决方法

试试:

首先利用pd.to_numeric()将字符串数值转化为实际数值:

df['FEATURE_VALUE']=pd.to_numeric(df['FEATURE_VALUE'],errors='coerce').fillna(df['FEATURE_VALUE'])

最后使用 groupby()+agg()(带命名元组):

out=df.groupby('FEATURE',as_index=False).agg(MIN_FEATURE_VALUE=('FEATURE_VALUE','min'),MAX_FEATURE_VALUE=('FEATURE_VALUE','max'))

通过pivot_table()

out=df.pivot_table('FEATURE_VALUE','FEATURE',aggfunc=['min','max'])
out.columns=out.columns.map('_'.join).str.upper()
out=out.reset_index()

out 的输出:

  FEATURE   MIN_FEATURE_VALUE   MAX_FEATURE_VALUE
0   A       2.0                 11.0
1   B       A                   G
2   C       9.0                 100.0

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?