我有一个数据帧,每个列有多个空值和不同的数据类型。例如,我有下面的数据帧,我想选择列";名称"国家;以及";作业";并且只有当值为all CAPSLOCK时才将capwords应用于所有这一列(可以在之前将所有内容转换为str,这不是问题(。所以这个数据帧:
ID Name Country Job
1 PAULO BRAZil JOHN'S DRIVER
2 Joao $ -
3 Maria np.nan DriveR
3 MARIA Portugal DRIVER
4 PEdro ARGENTINA DRIVER
将返回此输出:
ID Name Country Job
1 Paulo BRAZil John's Driver
2 Joao $ -
3 Maria np.nan DriveR
3 Maria Portugal Driver
4 PEdro Argentina Driver
最好的方法是什么?
让我们为每个值尝试applymap
import string
cols = ['Name', 'Country', 'Job']
df[cols] = df[cols].applymap(lambda val: string.capwords(val) if val.isupper() else val)
print(df)
ID Name Country Job
0 1 Paulo BRAZil John's Driver
1 2 Joao $ -
2 3 Maria np.nan DriveR
3 3 Maria Portugal Driver
4 4 PEdro Argentina Driver
5 5 PEdro Argentina Driver