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

【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 14: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月28日
  • 已采纳回答 6月21日
  • 修改了问题 6月20日
  • 创建了问题 6月20日

悬赏问题

  • ¥15 查询优化:A表100000行,B表2000 行,内存页大小只有20页,运行时3页,设计两个表等值连接的最简单的算法
  • ¥15 led数码显示控制(标签-流程图)
  • ¥20 为什么在复位后出现错误帧
  • ¥15 结果有了,想问一下这个具体怎么输入
  • ¥15 怎么修改鸿蒙app的UI及功能设计
  • ¥15 帮我利用jupyter 运行一个正确的代码
  • ¥15 如何使用Gephi软件和Python包中的GephiStreamer交互
  • ¥15 sqlite加密问题咨询
  • ¥15 appdesigner接收不到udp组播的数据
  • ¥15 verilog 非阻塞赋值下的移位拼接错误