joeyoung18 2021-03-26 20:51 采纳率: 100%
浏览 219
已采纳

DataFrame经循环语句后输出series,期望是按原格式输出DataFrame

import pandas as pd

#定义DataFrame
df = pd.DataFrame(([1,2,3,4],[3,4,5,6],[4,5,6,7]),columns = list('abcd'))

#定义函数
def func(x):
    temp = []
    for i in range(4):
        if x[i] > 3:
            temp.append('over 3')
        else:
            temp.append('under 3')
    return temp

#apply过程
df.apply(func,axis = 1)

#输出的是Series,并不是在原DataFrame格式上修改内容
#期望达到的效果是直接在原DataFrame的格式上对值进行修改
#这里是对触发现象的函数进行了简化,更加具体的函数式在下方已补充

---

这里是补充描述

import pandas as pd

#定义DataFrame
df = pd.DataFrame(([1,0,0,1],[0,0,0,1],[0,1,0,0]),columns = list('abcd'))

#定义函数
def func(x):
    states = []
    for i in range(4):
       
        if x[i] == 0:
            if len(states) > 0:
                if states[i-1] == 'unreg':
                    states.append('unreg')
                else:
                    states.append('unactive')
            else:
                states.append('unreg')
      
        else:
            if len(states) == 0:
                states.append('new')
            else:
                if states[i-1] == 'unactive':
                    states.append('return')
                elif states[i-1] == 'unreg':
                    states.append('new')
                else:
                    states.append('active')
    return states

#对DataFrame使用函数
df.apply(func,axis = 1)

#此时输出的是Series,但我期望的是保留原DataFrame的格式,将原本的数值替换成相应的文本

期望显示的结果如下:

 

谢谢各位大大指路...!

 

 

 

  • 写回答

3条回答 默认 最新

  • 关注

    试试这个呢:

    df_re = pd.DataFrame(df.apply(func,axis = 1).tolist(),columns= list('abcd'))
    Out[27]: 
           a         b         c         d
    0    new  unactive  unactive    return
    1  unreg     unreg     unreg       new
    2  unreg       new  unactive  unactive
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题