我正在尝试在数据框中的一行中的所有列中搜索文本“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/