从现有的两列 python 创建唯一 ID

Posted

技术标签:

【中文标题】从现有的两列 python 创建唯一 ID【英文标题】:Create unique ID from the existing two columns, python 【发布时间】:2016-05-05 03:41:03 【问题描述】:

我的问题是:如何有效地从现有 id 列中签署数据唯一 id 编号?例如:我有两列 [household_id] 和 [person_no]。我尝试创建一个新列,查询将是:family_id + '_' + person_no。

这是一个示例:

hh_id       pno  
 682138    1   
 365348    1     
 365348    2

尝试获取:

unique_id
682138_1
365348_1
365348_2

并将此 unique_id 添加为新列。 我正在应用 Python。我的数据非常大。任何有效的方法都会很棒。谢谢!

【问题讨论】:

一个新的列什么?您在使用 CSV 数据吗?数据库?像 Pandas 或 NumPy 这样的数据分析工具? 【参考方案1】:

您可以使用pandas。

假设您的数据在 csv 文件中,请读入数据:

import pandas as pd 

df = pd.read_csv('data.csv', delim_whitespace=True)

创建新的 id 列:

df['unique_id'] = df.hh_id.astype(str) + '_' + df.pno.astype(str)

现在df 看起来像这样:

    hh_id  pno unique_id
0  682138    1  682138_1
1  365348    1  365348_1
2  365348    2  365348_2

写回一个 csv 文件:

df.to_csv('out.csv', index=False)

文件内容如下:

hh_id,pno,unique_id
682138,1,682138_1
365348,1,365348_1
365348,2,365348_2

【讨论】:

谢谢你,迈克!存储为 DataFrame 的数据。我试过: test['id'] = test.apply(lambda row: (row['hh_id'].astype(str) + '_' + row['pno'].astype(str)), axis=1 ) 出现错误:回溯(最近一次调用最后一次):文件“”,第 1 行,在 文件“C:\Anaconda\lib\site-packages\pandas\core\frame.py”,第 3596 行, 在应用中返回 self._apply_standard(f, axis, reduce=reduce) 文件“C:\Anaconda\lib\site-packages\pandas\core\frame.py”,第 3686 行,在 _apply_standard 结果[i] = func( v) 文件“”,第 1 行,在 TypeError: ('data type not understand', u'occurred at index 0') 你试过我建议的解决方案test['unique_id'] = test.hh_id.astype(str) + '_' + test.pno.astype(str)吗?

以上是关于从现有的两列 python 创建唯一 ID的主要内容,如果未能解决你的问题,请参考以下文章

根据两列分配唯一 ID [重复]

Python,Qt,ComboBox,两列?

如何使用 UCanAccess 在两列上创建具有唯一约束的表?

根据两列重复值找出唯一的***记录[重复]

MySQL计算两列上的唯一值并为每列加入这些计数

laravel中独特的两列