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

【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日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部