gpt4 book ai didi

python - Pandas - 'Series' 对象没有属性

转载 作者:太空狗 更新时间:2023-10-29 22:21:20 25 4
gpt4 key购买 nike

我需要使用 lambda 函数逐行计算。例如创建一些数据框

import pandas as pd
import numpy as np

def myfunc(x, y):
return x + y

colNames = ['A', 'B']
data = np.array([np.arange(10)]*2).T

df = pd.DataFrame(data, index=range(0, 10), columns=colNames)

使用 'myfunc' 这确实有效

df['D'] = (df.apply(lambda x: myfunc(x.A, x.B), axis=1))

但是第二种情况不起作用!

df['D'] = (df.apply(lambda x: myfunc(x.colNames[0], x.colNames[1]), axis=1))

报错

AttributeError: ("'Series' object has no attribute 'colNames'", u'occurred at index 0')

我真的需要使用第二种情况(使用列表访问 colNames),它给出了一个错误,关于如何做到这一点的任何线索?

最佳答案

当您使用 df.apply() 时,DataFrame 的每一行都将作为 pandas 系列传递给您的 lambda 函数。然后框架的列将成为系列的索引,您可以使用 series[label] 访问值。

所以这应该可行:

df['D'] = (df.apply(lambda x: myfunc(x[colNames[0]], x[colNames[1]]), axis=1)) 

关于python - Pandas - 'Series' 对象没有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40506390/

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