python - 对 pandas 数据框项的迭代

标签 python pandas

我已经读过很多次,在数据帧中应该避免迭代,所以我一直在尝试“更好的方法”,例如应用函数,但我遇到了以下错误:

The truth value of a Series is ambiguous

我需要在各个行项目上运行迭代计算并获取更新的值。这是一个简化的示例,但实际情况包含大量数学知识,因此为什么首选函数:

df = pd.DataFrame({'A':[10,20,30,40], 'B':[4,3,2,1]})

def match_col(A,B):
    while A != B:
        B = B + 1

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

基本上,我需要每一行使用多个项目,运行迭代计算,并输出新的/更新的项目。我哪里逻辑错了?

最佳答案

而是这样做:

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

因为您要在每一行上应用该函数,所以该行的值需要传递给 match_col 而不是整个系列,例如df['A']

您还需要从函数中返回一些内容:

def match_col(A,B):
    while A != B:
        B = B + 1
    return B

然后你会得到这样的结果:

In [10]: df.apply(lambda x: match_col(x['A'],x['B']),axis=1)                    
Out[10]: 
0    10
1    20
2    30
3    40
dtype: int64

关于python - 对 pandas 数据框项的迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59997079/

相关文章:

python - 我正在尝试使用多个值删除行,但出现错误

python - 如何比较两个 Pandas DataFrame 并显示 DataFrame 2 中的差异

python - 使用扭曲框架(通过 UDP)发送许多 DNS 查询的最佳方式?

python - 将行数据移动到列(不转置)

python - 我想基于上一列添加一个新的 DataFrame 列,以便如果上一列元素与列表值匹配,则更改该值

python - 将 df1 列值替换为 df2 列值 - df-1 column-3 的值是 df-2 的列

python - Pandas 数据框与分配给特定值的重复项合并

Python:当第一列不总是相等时,抓取表/获取特定列

python - 如何将装饰器中的变量传递给装饰函数中的函数参数?

python - 如何从 Python 横向打印 PDF 文件到打印机?