python - 将 pandas 数据框值与字典键进行比较,然后将该字典中的值插入到新列中
问题描述
相对较新的 python/pandas 用户在这里。我在 A 列中有一个包含数千个值的数据框,索引到 Account_num。
ID_num A
A300 37
B400 82
T500 10
... ...
还有另一个数据框,在 M 列中有大约 300 个值。N 列中的每个值都显示在第一个数据框的 A 列中,每列数百/数千次。对于这些值中的每一个,都有平均值、中位数和众数。
M Mean Median Mode
99 2.3 7.0 9.9
37 3.6 6.6 0.2
10 4.1 4.2 8.1
82 1.9 7.7 5.0
... ... ... ...
我正在寻找的输出将是这样的:
ID_num A Mean Median Mode
A300 37 3.6 6.6 0.2
B400 82 1.9 7.7 5.0
T500 10 4.1 4.2 8.1
... ... ... ... ...
到目前为止,我的研究已将我指向 .map 函数,我将在其中将第二个表 (M) 转换为字典,然后将其映射到第一个表中的列。但是,我无法理解它是如何工作的,以及我需要写什么来确保正确的值进入正确的列。我还没有为此写一个完整的 if 语句......但我不确定这是否是正确的方向。
任何想法或研究领域将不胜感激!
解决方案
该线程可能有助于您了解有关该map
功能的更多信息:
Using python map and other functional tools
但是,对于您的特定问题, amerge
可能是一个更简洁的选择。
import pandas as pd
df1 = pd.DataFrame({'ID_num': ['A300', 'B400', 'T500'], 'A': [37, 82, 10]})
df2 = pd.DataFrame({'M': [99, 37, 10, 82],
'Mean': [2.3, 3.6, 4.1, 1.9],
'Median': [7.0, 6.6, 4.2, 7.7],
'Mode': [9.9, 0.2, 8.1, 5.0]})
pd.merge(df1, df2, how='left', left_on='A', right_on='M').drop('M', axis=1)
输出:
ID_num A Mean Median Mode
0 A300 37 3.6 6.6 0.2
1 B400 82 1.9 7.7 5.0
2 T500 10 4.1 4.2 8.1
推荐阅读
- angular - 如何阅读嵌套指令?
- php - 使用 for 或 foreach 填充此多维数组
- r - 如何用特殊方式填写NA
- docker - 无法使用 phpmyadmin 登录 mysql
- c++ - 如何使用 SAM 在本地运行 C++ AWS Lambda 函数?
- c# - 在 C# 中使用 Deedle 连接两个字符串列
- javascript - Mongo/mongoose $facet 过滤器,如果客户应用了过滤器,则返回所有产品的品牌/标签作为响应
- c# - MySqlConnection.Open() 突然停止工作
- sql - 无法从包含 PK 的表中删除行
- c# - 当绑定对象设置为视图模型中的新对象时,如何使我的文本框控件更新?