用另一个数据框中的值填充多个列

2024-09-27 04:30:19 发布

您现在位置:Python中文网/ 问答频道 /正文

基于某些条件,我试图用另一个Pandas数据帧中的列来填充一个Pandas数据帧中的空列

第一个表是audit_records_df,它看起来像这样:

^{tb1}$

第二个表是spam_profile_most_recent_notes

^{tb2}$

注意,与audit_records_df表(其中一个id可以有多行)不同,在spam_profile_most_recent_notes表中,每个id将只有一行。

我正试图根据以下标准,使用spam_profile_most_recent_notes表中同名列的值填充maliciousness_levelsuspicious_counts表中的audit_records_df列(我们需要忽略ire_1ire_2列):

  • 对于{}表中{}与{}中{}匹配的行,使用{}表中{}与{}匹配行的相应值填充{}表中的{}与{}匹配的行

填充后audit_records_df表应如下所示:

^{tb3}$

我见过一些类似的问题,比如:Conditionally fill column with value from another DataFrame based on row match in Pandas。然而,我所看到的一切都是关于在一列中填充值的,这与我的用例不同,在我的用例中,我必须为多个列填充值

如有任何建议,将不胜感激


Tags: 数据idmostpandasdfauditspam用例
1条回答
网友
1楼 · 发布于 2024-09-27 04:30:19

我认为你可以通过以下方式解决这个问题:

  1. audit_record_df表中删除malicious_levelsuspicious_counts
  2. 仅保留idmalicious_levelsuspicious_counts列中的spam_profile_most_recent_notes
  3. 使用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   

相关问题 更多 >

    热门问题