如何使用 iterrows() 进行迭代并检查子集

how to iterate using iterrows() and check for a subset

我会在包含元组所有元素的数据框中找到行,然后在特定列中为该行的相应索引设置一个值

for ix, row in df.iterrows():
    if set(tuple).issubset(row):
      df.loc[ix, ['label']] = 1

但是我得到这个错误:

TypeError: unhashable type: 'list'

如果我执行以下代码块,它似乎可以工作,但我不知道如何在行与元组匹配的标签列中设置值

for row in df.astype(str).values.tolist():
  set(tuple).issubset(row))

有人有什么建议吗?

感谢您的帮助

使用列表理解例如随机生成的数据:

import pandas as pd
import numpy as np

np.random.seed(2)

tuples = list(zip(np.random.randint(0, 5, 10), np.random.randint(
    10, 15, 10), np.random.randint(20, 30, 10)))

data = pd.DataFrame(dict(tups=tuples))

data.head()

#   tups
# 0 (0, 14, 23)
# 1 (0, 14, 25)
# 2 (3, 14, 28)

然后你可以设置label从列表comphrension生成值

tuple_subset = (0, 14)
data['Label'] = [1 if set(tuple_subset).issubset(x)
                 else None for x in data.tups]

data.head(3)

#   tups        Label
# 0 (0, 14, 23) 1.0
# 1 (0, 14, 25) 1.0
# 2 (3, 14, 28) NaN

使用enumerateiloc

for idx, row in enumerate(df.astype(str).values.tolist()):
    if set(tuple).issubset(row):
        df.iloc[idx, df.columns.get_loc('label')] = 1