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的格式,将原本的数值替换成相应的文本
期望显示的结果如下:
谢谢各位大大指路...!