有没有办法将一行中的多个元素添加到 python 集中?

Is there a way to add multiple elements in one line to a python set?

我正在遍历 pandas 数据框,并希望将唯一元素添加到数据框多列的集合中。目前我是这样做的:

list_a = set([])
for i, row in df.iterrows():
    list_a.add(row.a)
    list_a.add(row.b)

我试过这个:

list_a = set([])
for i, row in df.iterrows():
    list_a.add(row.a, row.b)

但它会导致以下错误消息:

TypeError: add() takes exactly one argument (2 given)

有没有比我做这个操作更优雅的方法(考虑有超过 2 列可以从中添加值的情况)?

您可以使用联合功能 - list_a = list_a.union([row.a, row.b])

查看有关 python 集文档的更多信息 - https://docs.python.org/2/library/sets.html

您可以使用Union组:

list_a = set()
for i, row in df.iterrows():
    list_a |= {row.a, row.b}

IIUC 那么以下应该有效:

df[['a','b']].stack().unique()

示例:

In [60]:
df = pd.DataFrame({'a': [0,1,2,2,3], 'b':np.arange(5), 'c':[-1,2,2,54,6]})
df

Out[60]:
   a  b   c
0  0  0  -1
1  1  1   2
2  2  2   2
3  2  3  54
4  3  4   6

In [61]:    
df[['a','b']].stack().unique()

Out[61]:
array([0, 1, 2, 3, 4], dtype=int64)

如有必要,您可以转换为 set

In [63]:
set(df[['a','b']].stack().unique())

Out[63]:
{0, 1, 2, 3, 4}