我的Excel工作表中有一列百分比存储百分比符号(例如" 50%")。如何强制pandas.read_excel
读取字符串" 50%"而不是把它扔到浮子?
目前read_excel
实现将百分比解析为浮点数0.5。另外,如果我添加converter = {col_with_percentage: str}
参数,它会将其解析为字符串' 0.5'。有没有办法读取原始百分比值(" 50%")?
答案 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)
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%