Pandas read_excel百分比为字符串

时间:2018-02-25 19:39:18

标签: python pandas

我的Excel工作表中有一列百分比存储百分比符号(例如" 50%")。如何强制pandas.read_excel读取字符串" 50%"而不是把它扔到浮子?

目前read_excel实现将百分比解析为浮点数0.5。另外,如果我添加converter = {col_with_percentage: str}参数,它会将其解析为字符串' 0.5'。有没有办法读取原始百分比值(" 50%")?

2 个答案:

答案 0 :(得分:3)

您可以使用转换器传递自己的功能。制作字符串的东西(例如:50%)可能看起来像:

代码:

def convert_to_percent_string(value):
    return '{}%'.format(value * 100)

测试代码:

import pandas as pd
df = pd.read_excel('example.xlsx', converters={
    'percents': convert_to_percent_string})
print(df)

或作为lambda:

df = pd.read_excel('example.xlsx', converters={
    'percents': lambda value: '{}%'.format(value * 100)})

结果:

  percents
0    40.0%
1    50.0%
2    60.0%

答案 1 :(得分:2)

 您可以在阅读后生成字符串

df = pd.DataFrame(np.random.ranf(size=(4,1)),columns =['col_with_percentage'])
df['col_with_percentage_s']= (df.col_with_percentage*100).astype(int).astype(str)+'%'
df                 

输出:

    col_with_percentage col_with_percentage_s
0   0.5339712650806299  53%
1   0.9220323933894158  92%
2   0.11156261877930995 11%
3   0.18864363985224808 18%

但更好的方法是在显示屏上进行格式化,你可以在pandas中通过style进行格式化

df.style.format({'col_with_percentage': "{:.0%}"})

输出:

col_with_percentage col_with_percentage_s
0   53% 53%
1   92% 92%
2   11% 11%
3   19% 18%