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

【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 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B