gpt4 book ai didi

python - 如何确定 N 个 bool Pandas 列的逻辑真值?

转载 作者:行者123 更新时间:2023-12-04 01:02:52 25 4
gpt4 key购买 nike

我有一个对表执行分析并添加额外功能以对该行数据进行分类的管道。在这个玩具箱中,我有一个带有特征 [id, x, y, z] 的表格,我正在添加 has_adj。我不知道如何确定 N 列的逻辑真值(即调整搜索中的列数可以是 N):

    id   x     y     z     n   has_adj_0  has_adj_1  has_adj_n
0 AX1 10.0 Adj <NA> .. True False ...
1 V0D 3.5 <NA> <NA> .. False False ...
2 G7L 8.0 <NA> Adj .. False True ...

最后,我设置特征 df['has_adj'] = True 其中行包含 any True 值,否则错误

这是生成上表的玩具示例:

import pandas as pd
import re

def hf_txn_has_adj(text, regex_dict):
if pd.isna(text):
return False

rx = re.compile(regex_dict['regex_value'])
result = rx.match(text)
if rx.match(text):
return True
else:
return False

regex_dict = {'regex_value': '(Adj)'}
df = pd.DataFrame([['AX1', 10, 'Adj', pd.NA],
['V0D', 3.5, pd.NA, pd.NA],
['G7L', 8, pd.NA, 'Adj']],
columns=['id', 'x', 'y', 'z'])

for i, adj_feat in enumerate(['y', 'z']):
df['has_adj_' + str(i)] = df[adj_feat].apply(hf_txn_has_adj, regex_dict=regex_dict)

最佳答案

尝试 filter + any在轴上=1:

df['has_adj'] = df.filter(like='has_adj_').any(axis=1)

print(df)

df:

    id     x     y     z  has_adj_0  has_adj_1  has_adj
0 AX1 10.0 Adj <NA> True False True
1 V0D 3.5 <NA> <NA> False False False
2 G7L 8.0 <NA> Adj False True True

关于python - 如何确定 N 个 bool Pandas 列的逻辑真值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67654174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com