gpt4 book ai didi

python - 如何从 float 中删除字符?

转载 作者:太空宇宙 更新时间:2023-11-04 00:55:09 25 4
gpt4 key购买 nike

我目前有一个如下所示的数据框:

   Idnumber    Ownership    Date
1 100 2006
2 >50 2006
1 80 2007
3 NaN 2006

Ownership 列当前是 float 类型。我想要的是在 idnumber 上创建一个 groupby 函数,该函数返回每个 Idnumber 的最大值。问题是这对于 > < 或 ± 之类的东西是不可能的(错误:不可排序的类型:float() >= str())。

  df['Ownership'] = df['Ownership'].astype(str)
df['Ownership'] = df['Ownership'].map(lambda x: x.strip('± = > + <'))
df['Ownership'] = df['Ownership'].astype(float).fillna(0.0)
df['Ownershipadjusted']= df['Ownership'].groupby([df['Idnumber'],df['Ownership']]).max()

实际上不起作用,因为将其转换回 float 会产生错误:无法将字符串转换为 float 。

         df['Ownership'] = df['Ownership'].apply(pd.to_numeric, errors='coerce')

也没有达到要求的效果。是否有更直接的方法从 float 中删除符号,或使此转换有效?

为了避免混淆,这是我需要的:

 Idnumber    Ownership    Date      Ownership adjusted
1 100 2006 100
2 50 2006 50
1 80 2007 100
3 0 2006 0

当然,dataframe 包含的观察值远不止 4 个

最佳答案

dtype 转换为 str 然后 extract数字并将 dtype 转换回 float:

In [215]:
df['Ownership'] = df['Ownership'].astype(str).str.extract('(\d+)').astype(float)
df

Out[215]:
Idnumber Ownership Date
0 1 100 2006
1 2 50 2006
2 1 80 2007
3 3 NaN 2006

另外你的 groupby 声明是错误的你需要这个:

In [218]:
df['Ownershipadjusted']= df.groupby(['Idnumber'])['Ownership'].transform('max')
df

Out[218]:
Idnumber Ownership Date Ownershipadjusted
0 1 100 2006 100
1 2 50 2006 50
2 1 80 2007 100
3 3 NaN 2006 NaN

关于python - 如何从 float 中删除字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35460075/

25 4 0
文章推荐: python - 如何在 Pandas 中 reshape 数据框?
文章推荐: c - C中的函数调用需要多少条机器指令?
文章推荐: html - 你能用 "display: inline"覆盖内部
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com