python - 根据python中的其他列生成自定义ID
问题描述
我有一个看起来像这样的熊猫 df
UID DOB BEDNUM
0 1900-01-01 CICU1
1 1927-05-21 CICU1
2 1929-10-03 CICU1
3 1933-06-29 CICU1
4 1936-01-09 CICU1
5 1947-11-14 CICU1
6 1900-01-01 CICU1
7 1927-05-21 CICU1
8 1929-10-03 CICU1
9 1933-06-29 CICU1
10 1936-01-09 CICU1
11 1947-11-14 CICU1
现在我想在该数据框中添加一个新列 TID,它应该是 'YYYY-0000000-P' 格式
UID DOB BEDNUM TID
0 1900-01-01 CICU1 1900-0000000-P
1 1927-05-21 CICU1 1927-0000001-P
2 1929-10-03 CICU1 1929-0000002-P
3 1933-06-29 CICU1 1933-0000003-P
4 1936-01-09 CICU1 1936-0000004-P
5 1947-11-14 CICU1 1947-0000005-P
6 1900-01-01 CICU1 1900-0000006-P
7 1927-05-21 CICU1 1927-0000007-P
8 1929-10-03 CICU1 1929-0000008-P
9 1933-06-29 CICU1 1933-0000009-P
10 1936-01-09 CICU1 1936-0000010-P
11 1947-11-14 CICU1 1947-0000011-P
我在一个表中有 24000 条记录,最后一条记录 TID 应该看起来像“YYYY-0024000-P”。
如果有人可以帮助我,我将不胜感激。提前致谢!!
解决方案
这个答案假设DOB
是datetime
:
year = df.DOB.dt.year
nums = df.UID.astype(str).str.zfill(7)
df.assign(TID=[f'{y}-{num}-P' for y, num in zip(year, nums)])
UID DOB BEDNUM TID
0 0 1900-01-01 CICU1 1900-0000000-P
1 1 1927-05-21 CICU1 1927-0000001-P
2 2 1929-10-03 CICU1 1929-0000002-P
3 3 1933-06-29 CICU1 1933-0000003-P
4 4 1936-01-09 CICU1 1936-0000004-P
5 5 1947-11-14 CICU1 1947-0000005-P
6 6 1900-01-01 CICU1 1900-0000006-P
7 7 1927-05-21 CICU1 1927-0000007-P
8 8 1929-10-03 CICU1 1929-0000008-P
9 9 1933-06-29 CICU1 1933-0000009-P
10 10 1936-01-09 CICU1 1936-0000010-P
11 11 1947-11-14 CICU1 1947-0000011-P
推荐阅读
- javascript - 如何使此页面中的所有 EventListener 工作?
- r - 从 SpatialPointsDataFrame 中的每个点到第二个 shapefile 中最近的点/线的最快笛卡尔距离 (R)
- python-3.x - WinError 10022:提供了一个无效的参数,我不知道为什么
- python - Python 无法将消息添加到 Thunderbird Mbox
- javascript - 如何取消订阅嵌套的实时 Firebase Cloud Firestore 数据库?
- c++ - 在 Windows 上使用带有 Cxx.jl 的 Julia 中的 boost 库
- python - 函数在应该返回最后一个索引时返回 None
- ios - UIView 动画不起作用 - Xcode (Swift)
- php - 如何将 PHP 对象转换为 C++ 对象
- ios - 如何在颤动的列表底部显示一个按钮?