这是问题here的后续跟进:
如何使用函数修改数据框?假设我想在a中的值上调用.upper()
df = pd.DataFrame({'a':['london','newyork','berlin'],
'b':['uk','usa','germany'],
'c':[7,8,9]})
df1 = df[['a', 'b']]
def doSomething(x):
return x.a
print (df1.apply(doSomething, axis=1))
0 london
1 newyork
2 berlin
dtype: object
call `.upper()` on values in `a`:
return
0 LONDON
1 NEWYORK
2 BERLIN
dtype: object
解决方法:
def doSomething(x):
return x.upper()
print (df1.a.apply(doSomething))
0 LONDON
1 NEWYORK
2 BERLIN
Name: a, dtype: object
print (df1.a.apply(lambda x: x.upper()))
0 LONDON
1 NEWYORK
2 BERLIN
Name: a, dtype: object
它也适用于:
def doSomething(x):
return x.a.upper()
print (df1.apply(doSomething, axis=1))
0 LONDON
1 NEWYORK
2 BERLIN
dtype: object
但更好的是使用str.upper
,它与NaN值完美配合:
print (df1.a.str.upper())
0 LONDON
1 NEWYORK
2 BERLIN
Name: a, dtype: object
如果需要添加新列:
df['c'] = df1.a.str.upper()
print (df)
a b c
0 london uk LONDON
1 newyork usa NEWYORK
2 berlin germany BERLIN
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。