python - 如何使用来自第二个数据帧的值填充新列,但依赖于当前数据帧中不同的现有列使用 Pandas
问题描述
我创建了一个信息表,它很长(想想将近 100 次观察或不到)。我有一个主表(大约 70K 保留),我需要在其中创建一个新列并根据我的两个数据框之间的匹配值填充它,但我需要用我的信息表中的数据填充单元格的新列。
我创建了一个小数据集,但我的真实数据集(我无法分享,因为我的教授签署了保密协议)有 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
使用一些布隆值有关。口头上我会说:
- 如果 data_2["Animal"] == data_2["Animal"]
- 然后用在 data_1["Food"] 中找到的相应食物填充新列 data_2["Fed"]
我认为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
推荐阅读
- reactjs - 反应 - 更新
- c# - 尝试从数据库 GridView 特定用户 (OleDbCommand) 进行更新
- python - 如何在 matplotlib 中交替散点图的颜色?
- pytorch - Pytorch 重建损失
- algorithm - 两个栈和一个deque,实现它的目的是什么?
- wordpress - 如何将帖子显示为元素但从网址中删除帖子
- vue.js - 如何在 Nuxtjs App 中删除加载百分比微调器
- java - 字符串循环旋转的更好方法
- git - 我可以从某人的本地工作仓库中执行 git checkout 分支吗?
- c++ - 使用时钟()输出持续时间,但输出相乘