python - Pandas DataFrame 仅适用返回第一列

标签 python python-3.x pandas

我正在尝试在数据框中的一行中的所有列中搜索文本“Total”。

def f(row):
    for i in range(0,len(row))
        if re.search('Total', row[i]) is None:
            return False
        else:
            return True

data['newColumn'] = data.apply(f, axis=1)

假设函数 f 在数据帧中每行调用一次是否正确?

发生的情况是,即使 len(row) 实际上返回了正确的列数,我的 newColumn 也仅获取数据帧中第一列的总计。

添加 print(row[i]) 也会打印出正确的值。但只有当 Total 位于第一列的文本中时,对新列的分配才为 True。我似乎也无法迭代传递到函数中的行。它的类型为系列。

最佳答案

由于循环内的两种情况都有 return 语句,因此该函数将始终在第一列之后返回。

试试这个:

import pandas as pd
df = pd.DataFrame({"row_1": ["foo", "Total", "bar"], 
                   "row_2": ["Total", "foo", "bar"]})
df["is_total_in_row"] = df.apply(
    lambda row : "Total" in list(row), axis=1)
print(df)

返回

      row_1  row_2  is_total_in_row
 0    foo  Total             True
 1  Total    foo             True
 2    bar    bar            False

关于python - Pandas DataFrame 仅适用返回第一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46600535/

相关文章:

python - Python 中用户定义的 croston 函数

python - 为 skimage 中的 regionprops 添加额外的属性

python - 如何使用pysftp检查SFTP中是否存在文件?

适用于 Windows 8 RT 的 Python IDE?

Python3 中的 Python 命名空间包

python - 检查类是否可迭代

python - 我如何使用GAE听Google表格然后运行一组python代码?

python - pandas dataframe 根据另一列值的范围插入值

python - Pandas,有没有更快的更新值的方法?

python - 如何根据列条件重命名 pandas DataFrame 索引