首页 > 解决方案 > 从所有列中获取唯一值的高效且优雅的方式 - 大数据

问题描述

我有一个包含 600 多列的数据框。我在这里给出了一个包含几列的示例数据框

df_new = pd.DataFrame({'person_id' :[1,2,3],'obs_date':['12/31/2007','11/25/2009',np.nan],
   'hero_id':[2,4,np.nan],'date2':['12/31/2017',np.nan,'10/06/2015'],
   'heroine_id':[1,np.nan,5],'date3':['12/31/2027','11/25/2029',np.nan],
   'bud_source_value':[1250000,250000,np.nan],
   'prod__source_value':[10000,20000,np.nan]})

我想从每一列中获取唯一值并将其输出到另一个数据框中

这是我尝试过的两种方法

cols = df_new.columns.tolist()
unique_list = dict()
for c in cols:  #appraoch 1
    unique_list[c] = df_new[c].unique()

for c in cols:   #approach 2
    unique_list[c] = df_new[c].drop_duplicates()

无论如何,是否可以一次性做到这一点而无需循环?请注意我希望每一列都有唯一的值,而不是数据框中的唯一行

由于我的数据超过百万条记录,列超过 600 条,因此任何需要改进的建议/解决方案都会有所帮助

标签: pythonpython-3.xpandasdataframeunique

解决方案


将数据框转换为 numpy 数组并执行以下操作

df_new =  np.array(df_new)
unique_list = np.unique(df_new,axis=1)

Numpy 更快!


推荐阅读