Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用第二个数据帧中的值填充新列,但取决于当前数据帧中使用熊猫的不同现有列_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何使用第二个数据帧中的值填充新列,但取决于当前数据帧中使用熊猫的不同现有列

Python 如何使用第二个数据帧中的值填充新列,但取决于当前数据帧中使用熊猫的不同现有列,python,pandas,dataframe,Python,Pandas,Dataframe,我创建了一个信息表,它非常长(想想近100个观察值或不到100个)。我有一个主表(大约70K onservations),我需要在其中创建一个新列,并根据两个数据帧之间的匹配值填充它,但我需要用信息表中的数据填充新列和单元格 我创建了一个小数据集,但我的真实数据集(我不能共享,因为我的教授签署了一个非双闭合数据集)有大约70K个观测值 数据_1(信息表) 数据2(原始表格) 所需数据帧 Name Animal Age Fed [new column] Binxy

我创建了一个信息表,它非常长(想想近100个观察值或不到100个)。我有一个主表(大约70K onservations),我需要在其中创建一个新列,并根据两个数据帧之间的匹配值填充它,但我需要用信息表中的数据填充新列和单元格

我创建了一个小数据集,但我的真实数据集(我不能共享,因为我的教授签署了一个非双闭合数据集)有大约70K个观测值

数据_1(信息表)

数据2(原始表格)

所需数据帧

 Name     Animal     Age    Fed [new column]
 Binxy    Dog         1     Stake
 Al       Rabbit      4     Carrot
 Sam      Dog         11    Stake
 Dexter   Cat         9     Fish
 Dory     Hamster     6     NaN
 Chloe    Cat         5     Fish
我的直觉告诉我这可能与
iloc
loc
以及使用一些bloonean值有关。我要口头上说:

  • 如果数据_2[“动物”]==数据_2[“动物”]
  • 然后用数据_1[“食品”]中找到的相应食品填充新列数据_2[“食品”]
  • 我认为
    merge
    可能会起作用,但我不确定它是否会为每个匹配值填充它。我不太擅长合并,因为我很难理解连接特性,但我认为不会在需要的地方插入值,因为我的数据帧长度不同

    编辑:我以前没有手动操作过,但我只需要填写两到三个值,我不想手动操作100。但这是我的基本理解

     New_Categorized_Full.loc[
          (New_Categorized["Produce"] == "Apple"), "Fruit"] = "Fuji"
    

    使用
    series.map

    df2['Fed'] = df2.Animal.map(dict(df1[['Animal','Food']].to_numpy()))
    
    
    Out[10]:
         Name   Animal  Age     Fed
    0   Binxy      Dog    1   Stake
    1      Al   Rabbit    4  Carrot
    2     Sam      Dog   11   Stake
    3  Dexter      Cat    9    Fish
    4    Dory  Hamster    6     NaN
    5   Chloe      Cat    5    Fish
    

    ~z~谢谢!它毫无问题地工作了!非常感谢!出于兴趣-通常如何将示例数据转换为数据帧?当以这种方式发布时,它似乎不那么简单,但我想知道是否有一种快速的方法可以将那里的输出转换为数据帧,例如。@baxx:高亮显示整个示例数据,然后通过
    ctrl+C
    或鼠标复制。在交互式python提示符中运行以下命令:
    df=pd.read\u剪贴板(r'\s+)
    。阅读此问题了解更多信息:
     New_Categorized_Full.loc[
          (New_Categorized["Produce"] == "Apple"), "Fruit"] = "Fuji"
    
    df2['Fed'] = df2.Animal.map(dict(df1[['Animal','Food']].to_numpy()))
    
    
    Out[10]:
         Name   Animal  Age     Fed
    0   Binxy      Dog    1   Stake
    1      Al   Rabbit    4  Carrot
    2     Sam      Dog   11   Stake
    3  Dexter      Cat    9    Fish
    4    Dory  Hamster    6     NaN
    5   Chloe      Cat    5    Fish