python在df pandas atribu中的应用函数

2024-05-13 13:27:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框“b”,其中的数字存储为文本,如“12.5%”。 一列是:

1       NaN
2       NaN
3      1.2%
4      0.6%
5       NaN
6      1.4%
7      0.1%
8       NaN
9      5.1%
10     2.5%
11    89.1%
12      NaN
Name: Idaho, dtype: object

我编写了一个应用于每个列的函数:

^{pr2}$

但当我尝试应用它时,我得到:

b.Idaho.apply(sinPorc)

AttributeError: 'float' object has no attribute 'replace'

我还创建了一个示例表,并应用了该函数,但在本例中有效:

ejemplo=pd.DataFrame({'A':['1.3%', 'NaN'],
              'B':['1.3%', '0.7%']})

ejemplo.A.apply(sinPorc)

我得到了预期的结果:

    1.3
    NaN
Name: A, dtype: float64

我不知道为什么我不能将函数应用于原始表。可能是什么问题?我应该怎么做才能解决它?在

谢谢。在


Tags: 数据函数name文本object数字nanfloat
1条回答
网友
1楼 · 发布于 2024-05-13 13:27:24

原来的方法不起作用,因为NaN不是字符串,而是浮点值np.NaN

试试这个。。。在

np.NaN.replace('%', '')

你会得到同样的错误。在

^{pr2}$

您可以将sinPorc更改为

def sinPorc(tbl):
    if tbl is np.NaN:
        return tbl
    else:
        return float(tbl.replace('%', ''))

这将保留您的NaN值,这些值对于其他Pandas功能很有用,或者您可以将该值强制为注释中提到的Nickil之类的字符串。在

float(str(tbl).replace('%', ''))

相关问题 更多 >