我想试用方法的Pandas DataFrame
对象的功能。下面是使用案例:熊猫DataFrame ApplyMap方法
让说我的数据帧df1
如下:
Age ID Name
0 27 101 John
1 22 102 Bob
2 19 103 Alok
3 27 104 Tom
4 32 105 Matt
5 19 106 Steve
6 5 107 Tom
7 55 108 Dick
8 67 109 Harry
现在我想创建一个标志变量与逻辑,如果元素的长度小于2,则标志= 1 else flag = 0。
为了运行这个元素,我想使用applymap
方法。所以,我创建了一个用户定义的函数如下:
def f(x):
if len(str(x))>2:
df1['Flag']=1
else:
df1['Flag']=0
然后我跑df1.applymap(f)
这给:
Age ID Name
0 None None None
1 None None None
2 None None None
3 None None None
4 None None None
5 None None None
6 None None None
7 None None None
8 None None None
,而不是创建一个具有标志值一个标志变量。我如何使用applymap
实现所需的功能?
我们不能在用户定义函数内使用DataFrame变量名称或pandas语句吗?也就是df1['Flag']
里面有效的f()
的定义?
谢谢。只是后续行动。在df1 ['Flag'] = df1.applymap(f).sum(axis = 1).astype(bool)语句中,当我们按列求和时,第一行的值应该为2(1 + 1 +0)?那么bool应该是真实的仪式?那么为什么它是假的? – Baktaawar
是的,对不起 - 我从'all'函数中复制了结果,但是在sum函数中写入了结果(bool(sum)给出了所有行的True,这不是一个好例子)。现在修复。 – Bonlenfum
@Baktaawar如果这解决了您的问题,那么除了“谢谢”之外,如果您能接受答案,这将非常棒! – Owen