我有这个初始数据框:
df = pd.DataFrame(data = {'colX': ['TQ95','SM90','SJ07','SH97','TF28']})
所以df如下:
colX
0 TQ95
1 SM90
2 SJ07
3 SH97
4 TF28
不,我创建了一个非常非常简单的函数并将其应用于 df:
def foo(x):
return x + 'bar'
df.apply(foo)
返回:
colX
0 TQ95bar
1 SM90bar
2 SJ07bar
3 SH97bar
4 TF28bar
那么为什么会出现以下情况:
def bar(x):
if len(x) == 4:
return 'x'
elif len(x) == 6:
return 'y'
else:
return 'z'
df.apply(bar)
返回这个?
colX z
dtype: object
而不是这个?
colX
0 x
1 x
2 x
3 x
4 x
请您参考如下方法:
你的意思是:
df['colX'].apply(bar)
因此,只检查列值的长度。
完整代码:
import pandas as pd
def bar(x):
if len(x) == 4:
return 'x'
elif len(x) == 6:
return 'y'
else:
return 'z'
df = pd.DataFrame(data = {'colX': ['TQ95','SM90','SJ07','SH97','TF28']})
df['colX'] = df['colX'].apply(bar)
