python - 从所有列中获取唯一值的高效且优雅的方式 - 大数据
问题描述
我有一个包含 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 条,因此任何需要改进的建议/解决方案都会有所帮助
解决方案
将数据框转换为 numpy 数组并执行以下操作
df_new = np.array(df_new)
unique_list = np.unique(df_new,axis=1)
Numpy 更快!
推荐阅读
- amazon-web-services - 将域转发到 Route 53 中的另一个域
- sql - SQL将行变成雪花中的列
- python - 熊猫数据框滚动连续计数
- java - 从控制台输出到 JavaFX TextArea 的 UTF-8 编码
- google-cloud-platform - 如何使用 CLI 将静态外部 IP 地址附加到谷歌云计算实例
- go - 如何处理 GORM 提交/回滚错误
- asp.net-core - 如何修复来自 HTTP Post 方法的验证错误
- ruby-on-rails - 如何获取rails上的参数总数
- javascript - 调查 JS 在 Json 而不是 XML 中获取调查结果响应
- android - AWS CustomTabsManagerActivity.java 在 android 上崩溃