【发布时间】:2021-11-03 13:37:23
【问题描述】:
我有两个看起来像这样的熊猫数据框:
df1
node_id lat long
0 [INET_N_855] 53.017810 23.896413
1 [INET_N_1828] 52.984994 22.241386
2 [INET_N_329] 52.881484 20.619795
3 [INET_N_1612] 46.505528 13.592806
4 [INET_N_1009] 46.503733 13.416054
... ... ... ...
4670 [SEQ_12031_p] 49.697490 12.328040
4671 [NO_N_30] 59.272825 5.519794
4672 [INET_N_379] 35.828836 14.556524
4673 [INET_N_1287] 61.638170 21.398810
4674 [Prod_33] 64.982320 6.611590
[4675 rows x 3 columns]
df2
node_id ... long
0 [INET_N_855, INET_N_1828] ... [23.896413, 22.241386]
1 [INET_N_1828, INET_N_329] ... [22.241386, 20.619795]
2 [INET_N_1612, INET_N_1009] ... [13.592806, 13.416054]
3 [INET_N_1612, INET_N_1009] ... [13.592806, 13.416054]
4 [INET_N_1612, INET_N_1009] ... [13.592806, 13.416054]
... ... ... ...
6318 [SEQ_6435_p, INET_N_379] ... [13.88715, 14.556524]
6319 [N_14_M_LMGN, INET_N_1287] ... [23.08042, 21.39881]
6320 [SEQ_12356_p, Prod_33] ... [6.755214, 6.61159]
6321 [N_261_M_LMGN, SEQ_2566_p] ... [25.34835, 25.25854]
6322 [N_261_M_LMGN, SEQ_2566_p] ... [25.34835, 25.25854]
[6323 rows x 3 columns]
df2 列 'node_id' 包含来自 df1 列 'node_id' 的项目。遗憾的是,'node_id' 中的某些项目太长了。因此,'node_id' 中的这些列表项应缩短到等于或小于 12 个字符,以便输入模拟程序。
为了实现这一点,我需要一个unique_identifier_generator(df1, df2) 函数,它将df1['node_id'] 中的条目转换为等于/小于12 个字符的唯一ID,并对具有匹配唯一ID 的df2['node_id'] 执行相同的操作.
我想我可以做熊猫元素更改部分。但是,我不知道如何创建unique_identifier_generator 函数。
你知道用什么吗?或者我应该检查什么python-package?或者可能是从给定字符串或给定熊猫系列生成唯一 ID 的简单方法?
【问题讨论】:
-
为什么node_id是df1中的一个列表?还有列表中的值是什么,它们是字符串吗?
-
不知道为什么。但可以使用
df['node_id'] = df['node_id'].apply(lambda x: x[0])进行转换。第二,列表中的值是字符串。
标签: python pandas function uniqueidentifier