【发布时间】:2021-07-20 15:54:39
【问题描述】:
我有一个 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', 'A', 'B', 'C', 'C'], 'FEATURE_VALUE': ['9', 'A', '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 值,我知道哪些特征是浮点/整数,哪些是字符串。有没有办法在聚合过程中一次性完成数据转换?
【问题讨论】:
标签: python pandas types aggregate