微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大熊猫的申请方法

如何解决大熊猫的申请方法

我在使用apply方法时遇到问题。因此,我正在尝试将系列的第一个和最后一个字母设为大写。首先,我做了一个简单的系列,即

s1 = pd.Series(['pandas','python','javascript','c#'])
s1

输出

0        pandas
1        python
2    javascript
3            c#
dtype: object

当我做一个简单的函数并运行它时。它工作正常,没有任何问题,并为我提供了希望的输出

def upp(x):
for i in x:
    print(f'{i[0].upper()}{i[1:-1].lower()}{i[-1].upper()}')

upp(s1)

输出

PandaS
PythoN
JavascripT
C#

但是,输出不是系列类型,我希望它做进一步的分析。我运行了一种类型检查类型的方法

type(upp(s1))

输出

nonetype

所以,我想我必须使用apply方法获取系列数据类型。但是,当我运行带有函数的apply方法时。结果不是我想要的。

def upp(x):
for i in x:
    print(f'{i[0].upper()}{i[1:-1].lower()}{i[-1].upper()}')
s1.apply(upp)

输出

PP
HH
PP
PP
YY
TT
HH
OO
NN
JJ
AA
VV
AA
CC
##
0    None
1    None
2    None
3    None
dtype: object

任何人都可以向我解释正在发生的事情以及我做错了什么,并提供有关如何使用和不使用apply方法的更多信息吗?我是初学者,正在练习一些问题。理解这个概念将对您有很大的帮助。

解决方法

您的函数将打印结果,而不是使用return返回结果。此外,for循环在您的函数中是多余的,因为.apply方法一次将函数应用于一项。

您可以将功能更改为:

def upp(x):
    return f'{x[0].upper()}{x[1:-1].lower()}{x[-1].upper()}'

s1.apply(upp)

或者,您可以简单地使用lambda函数:

s1.apply(lambda x: f'{x[0].upper()}{x[1:-1].lower()}{x[-1].upper()}')
,

您快到了。以下答案可能会有所帮助:

import pandas as pd


s1 = pd.Series(['pandas','python','javascript','c#'])


def upp(x):
    return f'{x[0].upper()}{x[1:-1].lower()}{x[-1].upper()}'

s1 = s1.apply(upp)

print(s1)

输出:

0        PandaS
1        PythoN
2    JavascripT
3            C#
dtype: object

您不需要在upp()中使用循环。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。