我想试试PandasDataFrame
对象的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
现在我想创建一个flag变量,其逻辑是如果元素的长度小于2,那么flag=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变量name或pandas语句吗?一、 例如,df1['Flag']
是否在f()
的定义内有效?
函数
f(x)
对pandas来说不是特别的——它只是一个普通的python函数。因此f
范围内的唯一数据是变量x
其他成员不可用。来自applymap文档:
所以你可以试试这个:
应用时为帧中的每个元素输出1/0:
要使用结果在每行中添加另一个变量,每行需要一个值,例如
还可以查看https://stackoverflow.com/a/19798528/1643946,它包含
apply
、map
以及applymap
。相关问题 更多 >
编程相关推荐