Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 数据帧仅应用于返回的第一列_Python_Python 3.x_Pandas - Fatal编程技术网

Python 数据帧仅应用于返回的第一列

Python 数据帧仅应用于返回的第一列,python,python-3.x,pandas,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是否正确 发生的情况是,

我试图在数据框中搜索行中所有列的文本“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只从数据帧中的第一列获取总数


添加打印(第[i]行)也会打印出正确的值。但是,只有当Total在第一列的文本中时,新列的赋值才是真的。我似乎也无法迭代传递到函数中的行。它有Series类型。

因为循环中两种情况都有一个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

从@Sumido借用的样本数据集:

In [43]: df['newColumn'] = df.select_dtypes(['object']).sum(1).str.contains('Total')

In [44]: df
Out[44]:
   row_1  row_2  newColumn
0    foo  Total       True
1  Total    foo       True
2    bar    bar      False
说明:

In [50]: df.select_dtypes(['object']).sum(1)
Out[50]:
0    fooTotal
1    Totalfoo
2      barbar
dtype: object