idontgiveA 2022-06-20 17:15 采纳率: 100%
浏览 413
已结题

【python, append】将一列数据改为百分比、并解决append替换前面数据的问题

如何将一列混合数据改为百分比、并解决append替换前面数据问题

df为一个有多行多列的dataframe,其中一列df['收益率']包含多种类型(float、NAN、以及string),希望把df['收益率']中的float转为百分比格式,其他数据不变。

代码如下:

def astype_percent(df):
    t = []      
    for i in df:
        use_dict = {}
        if type(i) == float:
            if not np.isnan(i):
                i = '%.2f%%' % (i * 100)
        if type(i) == str:
            use_dict = str(i)        
        t.append(use_dict)
    return pd.Series(t)

df['收益率'] = astype_percent(df['收益率'])

然后发现df['收益率'] 这列整体往前移动了一行,导致错位、最后一行缺值。
查了如何解决append替换前面数据的问题,但没有起作用

  • 写回答

2条回答 默认 最新

  • FlyingPig_chen 2022-06-20 22:46
    关注
    
    import pandas as pd
    import numpy as np
    
    
    df = pd.DataFrame({'收益率': ['4', 0.5, np.NAN, 0.36,0.45678, 1,'0.345','aaa']})
    print(df)
    
    def astype_percent(data):
        if isinstance(data,float):
            if np.isnan(data):
                return data
            return '%.2f%%' % (data * 100)
        elif isinstance(data,int):
            return '%.2f%%' % (data * 100)
        elif isinstance(data,str):
            try:
                data = float(data)
            except:
                return np.NAN
            else:
                return '%.2f%%' % (float(data) * 100)
    
    
    df['收益率'] = df['收益率'].apply(astype_percent)
    
    print(df)
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月29日
  • 已采纳回答 6月21日
  • 修改了问题 6月20日
  • 创建了问题 6月20日

悬赏问题

  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄