【发布时间】:2016-02-17 14:55:27
【问题描述】:
我目前有一个如下所示的数据框:
Idnumber Ownership Date
1 100 2006
2 >50 2006
1 80 2007
3 NaN 2006
所有权列当前是浮点类型。我想要的是在 idnumber 上创建一个 groupby 函数,该函数返回每个 Idnumber 的最大值。 问题是其中的 > = 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()
实际上不起作用,因为将其转换回浮点数会产生错误:无法将字符串转换为浮点数。
df['Ownership'] = df['Ownership'].apply(pd.to_numeric, errors='coerce')
也没有所需的效果。 有没有更直接的方法可以从浮点数中删除符号,或者使这种转换工作?
为避免混淆,这是我需要的:
Idnumber Ownership Date Ownership adjusted
1 100 2006 100
2 50 2006 50
1 80 2007 100
3 0 2006 0
当然,数据框包含的观察结果远不止 4 个
【问题讨论】: