python - 用来自另一个数据框的值填充多列
问题描述
我正在尝试根据某些条件用另一个 Pandas 数据框中的列填充一个 Pandas 数据框中的空列。
第一个表是audit_records_df
,它看起来像这样:
ID | 审计类型 | 审计日期 | 恶意级别 | 可疑计数 |
---|---|---|---|---|
123456 | 未知 | 2/5/21 | 钠 | 钠 |
123456 | 清除 | 2/6/21 | 钠 | 钠 |
123456 | 终止 | 2/8/21 | 钠 | 钠 |
345678 | 终止 | 2/5/21 | 钠 | 钠 |
第二张表是spam_profile_most_recent_notes
:
ID | 审计类型 | 审计日期 | 恶意级别 | 可疑计数 | 愤怒_1 | 愤怒_2 |
---|---|---|---|---|---|---|
123456 | 未知 | 2/5/21 | 高的 | 3 | 222 | 222 |
345678 | 终止 | 2/5/21 | 高的 | 6 | 222 | 222 |
请注意,与 audit_records_df
表不同(其中一个 id
可以有多行),在 spam_profile_most_recent_notes
表中每个 id
只有 1 行。
我正在尝试使用表中同名列的值填充列和表maliciousness_level
(我们需要忽略列和),基于以下条件:suspicious_counts
audit_records_df
spam_profile_most_recent_notes
ire_1
ire_2
- 对于表中匹配的行,用
audit_records_df
表中id
匹配id
的行中的对应值spam_profile_most_recent_notes
填充表中的maliciousness_level
和。suspicious_counts
audit_records_df
spam_profile_most_recent_notes
id
填充后,audit_records_df
表格应如下所示:
ID | 审计类型 | 审计日期 | 恶意级别 | 可疑计数 |
---|---|---|---|---|
123456 | 未知 | 2/5/21 | 高的 | 3 |
123456 | 清除 | 2/6/21 | 高的 | 3 |
123456 | 终止 | 2/8/21 | 高的 | 3 |
345678 | 终止 | 2/5/21 | 高的 | 6 |
我见过一些与此类似的问题:Conditionally fill column with value from another DataFrame based on row match in Pandas。但是,我所看到的只是在 1 列中填写值,这与我必须为多列填写值的用例不同。
任何建议将不胜感激。
解决方案
我认为您可以通过以下方式解决此问题:
- 从表中删除
malicious_level
和suspicious_counts
列audit_record_df
。 - 仅保留
id
,malicious_level
和suspicious_counts
列spam_profile_most_recent_notes
- 使用在两个表上执行左内连接
id
audit_record_df.drop(['maliciousness_level', 'suspicious_counts'], axis=1, inplace=True)
print(audit_record_df)
id audit_type audit_date
0 123456 Unknown 2/5/21
1 123456 Cleared 2/6/21
2 123456 Terminated 2/8/21
3 345678 Terminated 2/5/21
spam_profile_most_recent_notes = spam_profile_most_recent_notes[['id', 'maliciousness_level', 'suspicious_counts']]
print(spam_profile_most_recent_notes)
id audit_type audit_date
0 123456 Unknown 2/5/21
1 123456 Cleared 2/6/21
2 123456 Terminated 2/8/21
3 345678 Terminated 2/5/21
new_df = audit_record_df.merge(spam_profile_most_recent_notes, on='id', how='left')
print(new_df)
id audit_type audit_date maliciousness_level suspicious_counts
0 123456 Unknown 2/5/21 high 3
1 123456 Cleared 2/6/21 high 3
2 123456 Terminated 2/8/21 high 3
3 345678 Terminated 2/5/21 high 6
推荐阅读
- javascript - 关于BST JS递归函数执行的问题
- javascript - Webpack 在 ES5 中生成箭头函数
- r - 如何在R中为不同类型的数据绘制趋势线?
- angular - 新大型项目Angular2上的内联样式代码
- python - Python matplotlib 覆盖轴
- android - 尝试使用 Kotlin 在 android studio 4.1 上创建应用程序时出错
- angular - 如何将 Docker 容器内的 node_modules 表单同步到 node_modules 文件夹外?
- java - 如何使用递归获取二叉搜索树中的所有非叶节点?
- java - 带有 JAVA 的 MQTT - 当使用 QoS1 发布一些数据时,我丢失了一些数据
- c - 找出 typedef 是否在 C 中定义了特定类型