python - 组合和插入2个dataframe列并从中创建唯一的数字列表

时间:2017-11-13 08:10:07

标签: python list dataframe

我的数据框中有这个2整数列

from | to 
----------
 1   |  4
 2   |  4
 3   |  6

我希望将它们组合起来,我得到一个这样的列表: [1, 4, 2, 4, 3, 6]

然后我想从该列表中创建一个唯一值,如下所示: [1, 4, 2, 3, 6]

我该怎么做?

为了组合和插入2个数据帧,我尝试了这个:

' '.join(df['from'].astype('str') + ' ' + df['to'].astype('str'))

但我必须首先将它们转换为字符串,加入所有字符串,然后再将其拆分。我正在寻找更简单的方法来做到这一点。

为了在列表中查找唯一值,我尝试了:

list(set(non_unique_list))

但结果列表是:[1,2,3,4,6]这是我不想要的东西。我正在寻找特别是这个顺序:[1, 4, 2, 3, 6]

2 个答案:

答案 0 :(得分:1)

看起来stackunique是您正在寻找的内容:

>>> import pandas as pd
>>> df = pd.DataFrame({'from': [1,2,3], 'to':[4,4,6]})
>>> df
   from  to
0     1   4
1     2   4
2     3   6
>>> df.stack()
0  from    1
   to      4
1  from    2
   to      4
2  from    3
   to      6
dtype: int64
>>> df.stack().unique()
array([1, 4, 2, 3, 6])

答案 1 :(得分:1)

@addicted

你非常接近你想要达到的目标。通过加入数据框列获得non_unique_list项后,您可以通过执行以下操作获取此列表并获得生成的订单

final_order_list = [non_unique_list[i] for i in range(len(non_unique_list)) if i == non_unique_list.index(non_unique_list[i])]

最终结果如下:

>>> final_order_list 
['1', '4', '2', '3', '6']