根据其他值将数据框中的值添加到行

克里斯·伍德拉夫

我正在寻找一种高性能的方法来基于另一个值在数据框中查找值,并将查找值与其他值一起添加到行中的列中。

例如,我有这个数据框:

import pandas as pd

data = {
    'role': ['primary', 'secondary', 'primary', 'secondary'],
    'serial_number': ['abc', '123', 'def', '456'],
    'primary_serial_number': ['abc', 'abc', 'def', 'def'],
    'physical_id': ['w', 'x', 'y', 'z'],
    'set_id': ['j', 'x', 'k', 'z']
}
df = pd.DataFrame(data = data)

    role    serial_number   primary_serial_number   physical_id set_id
0   primary     abc                  abc                  w       j
1   secondary   123                  abc                  x       x
2   primary     def                  def                  y       k
3   secondary   456                  def                  z       z

辅助节点始终具有相同的physical_id和set_id。对于每个辅助节点,我希望在与辅助节点相同的行中具有相关主节点的set_id。我可以通过将每个辅助数据库的“ primary_serial_number”与每个主要数据库的“ serial_number”进行匹配来进行查找。然后,我应该有一个标记为“ primary_set_id”的列,其值分别为j,j,k,k。

我尝试了以下方法:

df['primary_set_id'] = df['primary_serial_number'].apply(
    lambda x: df['set_id'][df['serial_number'] == x])

当我对上面的伪数据运行此命令时,我得到:

ValueError:传递的项目数错误2,展示位置暗含1

实际上,我正在处理成千上万的行,并且这种方法效率极低(我尚未让它运行完毕)。

皮特巴格

我认为应该这样做

grps = df.groupby('role')
prim_df = grps.get_group('primary')
sec_df = grps.get_group('secondary')
primsec_df = sec_df.merge(prim_df, left_on = 'primary_serial_number', right_on = 'serial_number')
primsec_df

在专栏中,'sec_id_y'您将获得想要的:

|    | role_x    |   serial_number_x | primary_serial_number_x   | physical_id_x   | set_id_x   | role_y   | serial_number_y   | primary_serial_number_y   | physical_id_y   | set_id_y   |
|---:|:----------|------------------:|:--------------------------|:----------------|:-----------|:---------|:------------------|:--------------------------|:----------------|:-----------|
|  0 | secondary |               123 | abc                       | x               | x          | primary  | abc               | abc                       | w               | j          |
|  1 | secondary |               456 | def                       | z               | z          | primary  | def               | def                       | y               | k          |

我不确定大型df的效率如何

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据其他列中的值将列添加到数据框

根据R中其他数据框中是否存在值,将新值添加到新列中

根据其他列的值将新列添加到数据框

根据其他列的值将列添加到数据框

根据其他列值将新列添加到数据框

R-根据当前行和其他行中的值将计数添加到数据框

熊猫-根据其他列中的值将数据添加到列中

根据其他列中的值将数据添加到列中

将数据框中其他 2 列的值添加到空白列

根据一列中的值将行添加到数据框中

根据特定的行值将列添加到数据框中(2)

根据其他列的正则表达式捕获组中的值,将列有效地添加到数据框

将缺少的行从R中的其他数据框添加到数据框

根据其他单元格值将数据添加到单元格

大熊猫-根据多行中的值将汇总列数据的行添加到数据框中

根据R中两个数据框的两列中的匹配对名称,将值添加到另一个数据框的其他值中

将一个数据框重复的所有列值添加到其他熊猫中

比较其他列的值后,将新列添加到数据框

根据单个列中的值将值添加到数据框列

根据其他列中的值将新列添加到矩阵中

根据其他列中的值将新列添加到df

将字典中的值与数据框行值匹配并将数据添加到该行

根据行中的第一个值将新列添加到数据框

根据值将新行添加到pyspark数据框

R根据行值将索引列添加到数据框

根据特定的行值将列添加到数据框

将值添加到R中的其他列表

根据R中现有列中的值将列添加到数据框

根据其他列数据框中的值添加列