我想尝试使用Pandas DataFrame
对象的applymap
方法。以下是用例:
假设我的DataFrame 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,则flag=1,否则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语句吗?即,在f()
的定义内部使用df1 ['Flag']
是否有效?