我创建了一个信息表,它很长(想想近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
我的直觉告诉我,这可能与iloc
或loc
有关,并使用一些bloonean值。口头上我会说:
- 如果data_2["Animal"]==data_2["Animal"]
- 然后用在数据_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