有没有办法将一行中的多个元素添加到 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}
我正在遍历 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}