如何使用Pandas用来自第二个数据帧但依赖于当前数据帧中不同现有列的值填充新列



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

我创建了一个小数据集,但我的真实数据集(由于我的教授签署了非公开声明,我无法共享(有大约70K的观测值。

data_1(信息表(

Animal          Food
Dog            Stake
Cat            Fish
Rabbit         Carrot

数据2(原始表格(

Name     Animal     Age
Binxy    Dog         1
Al       Rabbit      4
Sam      Dog         11
Dexter   Cat         9
Dory     Hamster     6
Chloe    Cat         5

所需数据帧

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

我的直觉告诉我,这可能与ilocloc有关,并使用一些bloonean值。口头上我会说:

  1. 如果data_2["Animal"]==data_2["Animal"]
  2. 然后用在数据_1["food"]中找到的相应食物填充新的列data_2["Fed"]

我认为merge可能有效,但我不确定它是否会为每个匹配的值填充它。我不太擅长合并,因为我很难理解联接功能,但我不认为值会插入到我需要的地方,因为我的数据帧长度不一样。

edit:我以前没有手动过,但我只填写了两三个值,我不想手动为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

最新更新