Python 数据帧仅应用于返回的第一列
我试图在数据框中搜索行中所有列的文本“Total”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是否正确 发生的情况是,
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