我想从一个数据帧的两个不同列中提取值,将它们放在一个没有重复值的列表中
我尝试了以下方法:
arr = df[['column1', 'column2']].values
thelist= []
for ix, iy in np.ndindex(arr.shape):
if arr[ix, iy] not in thelist:
thelist.append(edges[ix, iy])
这是可行的,但时间太长了。数据帧包含大约3000万行
例如:
column1 column2
1 adr1 adr2
2 adr1 adr2
3 adr3 adr4
4 adr4 adr5
应生成包含以下值的列表:
[adr1, adr2, adr3, adr4, adr5]
考虑到dataframe包含3000万行,您能帮我找到一种更有效的方法吗
您可以只使用
np.unique(df)
(也许这是最短的版本)形式上,
np.unique
的第一个参数应该是类似于数组的对象, 但正如我所检查的,您也可以只传递一个数据帧当然,如果您只想要普通的列表而不是ndarray,请编写
np.unique(df).tolist()
编辑以下评论
如果您希望列表唯一,但按出现顺序,请写下:
操作顺序:
reshape
将源数组更改为单个列李>0
李>[0]
只取这个(唯一的)列李>drop_duplicates
完全按照名字的意思行事李>tolist
转换为普通的列表李>@ALollz给出了正确的答案。我将从那里开始。要按预期转换为列表,只需使用
list(np.unique(df.values))
相关问题 更多 >
编程相关推荐