gpt4 book ai didi

python - 使用自定义函数迭代 Pandas 中系列中的每个项目

转载 作者:行者123 更新时间:2023-12-01 03:45:24 24 4
gpt4 key购买 nike

我在 Pandas 中有一个数据框,其中列出了如下信息:

           Player     Year    Height
1 Stephen Curry 2015-16 6-3
2 Mirza Teletovic 2015-16 6-10
3 C.J. Miles 2015-16 6-7
4 Robert Covington 2015-16 6-9

现在 data['Height'] 将其值存储为字符串,我想将这些值转换为英寸存储为整数以供进一步计算。

我尝试了几种方法,包括 Pandas 文档中列出的方法,但没有效果。

第一次尝试

def true_height(string):
new_str = string.split('-')
inches1 = new_str[0]
inches2 = new_str[1]

inches1 = int(inches1)*12
inches2 = int(inches2)

return inches1 + inches2

如果你运行

true_height(data.iloc[0, 2])

它返回 75,即正确答案。

为了在整个系列上运行它,我更改了这行代码:

new_str = string.**str**.split('-') 

然后运行:

data['Height'].apply(true_height(data['Height']))

并收到以下错误消息:

int() argument must be a string or a number, not 'list'

然后我尝试使用 for 循环,认为这可能会解决这个问题,因此我将原始公式修改为:

def true_height(strings):
for string in strings:
new_str = string.split('-')
inches1 = new_str[0]
inches2 = new_str[1]

inches1 = int(inches1)*12
inches2 = int(inches2)

return inches1 + inches2

现在我收到以下错误:

'int' object is not callable

当我运行时:

data['Height'].apply(true_height(data['Height']))

我有点困惑。任何帮助,将不胜感激。谢谢。

最佳答案

您可以在将 Height 列拆分为列表后对其使用 apply,并向其传递 lambda 函数进行转换:

df['Height'] = df.Height.str.split("-").apply(lambda x: int(x[0]) * 12 + int(x[1]))

df
# Player Year Height
# 1 Stephen Curry 2015-16 75
# 2 Mirza Teletovic 2015-16 82
# 3 C.J. Miles 2015-16 79
# 4 Robert Covington 2015-16 81

或者使用您最初定义的 true_height 函数(第一次尝试)和 apply:

df['Height'] = df.Height.apply(true_height)

您不需要将 df.Height 传递给函数,因为 apply 接收函数作为参数。

关于python - 使用自定义函数迭代 Pandas 中系列中的每个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39009122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com