Python 将浮动的dataframe列更改为百分比样式错误

Python 将浮动的dataframe列更改为百分比样式错误,python,pandas,dataframe,Python,Pandas,Dataframe,我正在尝试将浮动的dataframe列转换为百分比样式 C 0.9977 0.1234 1.000 .. 到 为此,我正在做: df['C'] = df['C'].map(lambda n: '{:.2%}'.format(n)) 但我得到了以下错误: ValueError: Unknown format code '%' for object of type 'str' 我还尝试了“{:,.2%}”,但出现了相同的错误 我做错了什么?首先通过以下方式将列转换为浮点: 此外,应简化解决方案

我正在尝试将浮动的dataframe列转换为百分比样式

C
0.9977
0.1234
1.000
..

为此,我正在做:

df['C'] = df['C'].map(lambda n: '{:.2%}'.format(n))
但我得到了以下错误:

ValueError: Unknown format code '%' for object of type 'str'
我还尝试了
“{:,.2%}”
,但出现了相同的错误


我做错了什么?

首先通过以下方式将列转换为浮点:

此外,应简化解决方案:

df['C'] = df['C'].astype(float).map("{:.2%}".format)
编辑:

问题是列中有一些非数值


将非数字替换为
0

print (df)
                  C
0            0.9977
1            0.1234
2  Covered fraction
df['C'] = pd.to_numeric(df['C'], errors='coerce').fillna(0).map("{:.2%}".format)
print (df)
        C
0  99.77%
1  12.34%
2   0.00%
或删除具有以下值的行:

df['C'] = pd.to_numeric(df['C'], errors='coerce')
df = df.dropna(subset=['C'])
df['C'] = df['C'].astype(float).map("{:.2%}".format)
print (df)
        C
0  99.77%
1  12.34%
您还可以使用:

如果序列数据类型不是问题,并且希望将其用作字符串,请尝试:

df['C'] = df.C.apply(lambda x: f"{x[:x.find('.')+3]}%")
df
    C
0   0.99%
1   0.12%
2   1.00%

或者,如果使用python,这个解决方案也不起作用。我得到以下错误:
ValueError:无法将字符串转换为float:Covered fraction
style.format也不起作用,执行时什么也不会发生:/您的数据类型是字符串吗?@MohitMotwani-谢谢,它是匿名的,所以我很好奇:)
df['C'] = pd.to_numeric(df['C'], errors='coerce')
df = df.dropna(subset=['C'])
df['C'] = df['C'].astype(float).map("{:.2%}".format)
print (df)
        C
0  99.77%
1  12.34%
df.style.format({'C': '{:.2%}'})
df['C'] = df.C.apply(lambda x: f"{x[:x.find('.')+3]}%")
df
    C
0   0.99%
1   0.12%
2   1.00%
df['C'] = df.C.apply(lambda x: x[:x.find('.')+3]+'%')
df['C'] = pd.to_numeric(df['C'], errors='coerce').fillna(0)
df.style.format({'C': '{:.2%}'})