当前位置: 首页 > 知识库问答 >
问题:

将一列与另一个数据帧列匹配,并从第二个数据粘贴值-Python

阴福
2023-03-14

我有两个数据帧,一个包含数据,第二个包含代码及其解码值。我想将df1[代码]与df2[代码]匹配,并将df2[值]粘贴在df1中。需要注意的是,我的第二个数据帧包含代码和值一次,基本上是一张代码和值,但在第一个数据帧中,代码是重复的,因此将粘贴的值列应该代表每次代码出现在df1[代码]列中时的值。

我需要:

基本上是从第二个数据帧转换一个数据帧中的代码。

共有2个答案

邢浩邈
2023-03-14

使用地图记录如何:

map_dict = dict(zip(df2['code'], df2['value']))
df1['value'] = df1['code'].map(map_dict)
阎英朗
2023-03-14

假设你的数据帧如下:

df1
   code     something  some_number
0   210  SOMETHING_28     0.206017
1   913  SOMETHING_36     0.810195
2   210  SOMETHING_18     0.258638
3  None             a     0.000000
df2
   code     value
0   210  VALUE_01
1   590  VALUE_02
2   614  VALUE_03
3   696  VALUE_04
4   913  VALUE_05

然后,您可以使用merge,根据需要更改code列的类型(例如,如果它是字符串):

df1.code = df1.code.map(lambda x: np.int64(x) if x else np.nan).astype('Int64')
df2.code = df2.code.astype('Int64')
merged_df = df1.merge(df2, on='code', how='left')

你会得到:

   code     value
0   210  VALUE_01
1   913  VALUE_05
2   210  VALUE_01
3  <NA>       NaN

下面是创建df1df2的代码,其结构与此答案中显示的相同:

import pandas as pd
import numpy as np

codes = sorted(np.random.randint(1, 1000, 5))
values = [f'VALUE_{x:02.0f}' for x in range(1, len(codes) + 1)]

df1 = pd.DataFrame(
    data=[
        [c, f'SOMETHING_{np.random.randint(1, 50)}', np.random.random()]
        for c in np.random.choice(codes, 3)
    ],
    columns=['code', 'something', 'some_number']
)

df2 = pd.DataFrame(
    data=list(zip(codes, values)),
    columns=['code', 'value']
)
 类似资料:
  • 我有两个数据帧df1和df2 df1如下 df2就像 我想根据df2中与df1中的列名匹配的单元格值将值从df1复制到df2,所以我的df3应该看起来像 df3 基本上,我想根据df2的单元格值(df1中的列名)从df1复制df2中的列 如果它仍然令人困惑,请告诉我

  • 情况: 两个数据帧(df1和df2)具有相同的三个索引,例如“A”、“B”、“C”。df1和df2的列数不同。df1和df2中的所有单元格都填充了float类型的数据。 DF1: DF2: 目标: 从df2中选择的列(例如“BBB”)与df1的每列相加后,结果应存储在新的数据帧(df_new)中。df_new的格式应为df1(列数和行数),并具有与df1相同的列名和索引。 new_df: 我的做法

  • 我需要从一个工作簿复制棕褐色单元格并粘贴到另一个工作簿中。并且只需要在Excel中获取特定的单元格值。我实现了这一点,但只能粘贴到同一工作簿中的另一个工作表中。你能帮助我在粘贴数据到另一个工作簿上的一个特定的工作表,也应该粘贴的值在第二行,(即从第二行开始),因为第一行有标题在它。 源表标题: 项目阶段状态st Dt结束Dt预资源备注备注 Dest表标题: 现有代码:

  • 我有两个数据帧,如下所示- 我想检查在df1中的sym1是否存在于df2的sym2列中,如果存在,我想提取该行的名称,并将其添加到df1中作为新的列new_col。 为此,我尝试了下面的代码片段,它也在工作,但对于我的长数据帧,它不工作。我面临以下错误和警告消息- 代码片段- 如何从df2中获取这些名称列,并在df1中为特定行创建新的列?

  • 问题内容: 在Pandas DataFrame中,我可以使用函数将列值与另一列进行匹配。 例如:假设我们有一个DataFrame: 和另一个DataFrame: 我可以使用的功能相匹配的列值对的列值 例如: 产量: PySpark DataFrame中的等效操作是什么? 上面的代码给我一条错误消息: 问题答案: 这种操作在spark中称为“左半联接”:

  • 我在课堂上创建了两个列表。 其中一个称为预算,包含元素section、month和sum,返回以下内容: [Budzet{sec='AGD/RTV',月='01',和=96},Budzet{sec='AGD/RTV',月='03',和=30},Budzet{sec='食品',月='04',和=23},Budzet{sec='游戏',月='09',和=1084}...] 这是SQL查询 第二个是元素