您可以添加兩列在一起,讓你正在尋找的列表,然後使用df.drop()
與axis=1
刪除ids_x
和ids_y
列。示例 -
df = pd.merge(df1, df2, on='date', sort=False)
df['ids'] = df['ids_x'] + df['ids_y']
df = df.drop(['ids_x','ids_y'],axis=1)
演示 -
In [65]: df
Out[65]:
date ids_x ids_y
0 2015-10-13 [978] [978, 12]
1 2015-10-14 [978, 121] [2, 1]
In [67]: df['ids'] = df['ids_x'] + df['ids_y']
In [68]: df
Out[68]:
date ids_x ids_y ids
0 2015-10-13 [978] [978, 12] [978, 978, 12]
1 2015-10-14 [978, 121] [2, 1] [978, 121, 2, 1]
In [70]: df = df.drop(['ids_x','ids_y'],axis=1)
In [71]: df
Out[71]:
date ids
0 2015-10-13 [978, 978, 12]
1 2015-10-14 [978, 121, 2, 1]
如果你想刪除重複值,以及,你不在乎爲了,那麼你可以使用Series.apply
,然後再轉換該列表爲set
,然後返回list
。示例 -
df['ids'] = df['ids'].apply(lambda x: list(set(x)))
演示 -
In [72]: df['ids'] = df['ids'].apply(lambda x: list(set(x)))
In [73]: df
Out[73]:
date ids
0 2015-10-13 [978, 12]
1 2015-10-14 [121, 978, 2, 1]
或者像問意見,如果你想與numpy.unique()
做到這一點,你可以使用,隨着Series.apply
以及 -
import numpy as np
df['ids'] = df['ids'].apply(lambda x: np.unique(x))
演示 -
In [79]: df['ids'] = df['ids'].apply(lambda x: np.unique(x))
In [80]: df
Out[80]:
date ids
0 2015-10-13 [12, 978]
1 2015-10-14 [1, 2, 121, 978]
沒有辦法使用'numpy.unique()'刪除重複項,因爲它比'set()'更有效嗎? – ALH
是的,它的可能性,以及答案。 –
很好的答案。謝謝你的時間。 +1 – ALH