python-3.x - 如何根据条件字典重新计算 DataFrame 列值(Pandas Python)
问题描述
假设我有以下数据框:
一种 | 乙 | |
---|---|---|
0 | 啊 | 4.32 |
1 | 啊 | 7.00 |
2 | bb | 8.00 |
3 | dd | 74.00 |
4 | 抄送 | 30.00 |
5 | bb | 2.00 |
假设我有以下 dict,它在其键中确定列 A 的条件,并在其值中确定列 B 的乘数:
dict1={'aa':-1, 'bb':2}
我想要的只是将 B 列中的值与 dict1 中的 vulues 相乘,条件是 A 列中的值与 dict1 键相匹配。
所以输出应该是:
一种 | 乙 | |
---|---|---|
0 | 啊 | -4.32 |
1 | 啊 | -7.00 |
2 | bb | 16.00 |
3 | dd | 74.00 |
4 | 抄送 | 30.00 |
5 | bb | 4.00 |
谢谢
解决方案
使用pd.Series.map
:
print (df["A"].map(dict1).fillna(1)*df["B"])
0 -4.32
1 -7.00
2 16.00
3 74.00
4 30.00
5 4.00
dtype: float64
推荐阅读
- continuous-integration - 如何将 shell 脚本中的测试错误引发到 CircleCI
- python - 如何使用 matplotlib 或 seaborn 在两行中绘制 5 个子图?
- css - 空白:pre 和 flexbox
- javascript - 正则表达式:只有 1 个空格,但开头没有,没有数字/特殊字符,空格前后的任何字符串都需要至少 2 个字母字符
- php - jQuery文件上传:cURL文件上传工作,Python请求不
- c# - Azure SQL 数据库在 Visual Studio 2017 中打开,但未显示外键
- lambda - 如何在移动预期情况下检测意外副本
- javascript - Angular 8将未知数量的对象键映射到模型中
- swift - 如何将手势识别器添加到嵌套在 UIView 上的 RichTextView?
- angular - Angular如何将数组传递给组件