[英]Fill multiple columns with value from another dataframe
我正在嘗試在一個 Pandas dataframe 中填充一個 Pandas Z6A8064B5DF47945557DZ555 的列中的空列,基於某些條件。
第一個表是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 行。
我正在嘗試使用 spam_profile_most_recent_notes 表中同名列的值填充audit_records_df
表中的maliciousness_level
級別和suspicious_counts
spam_profile_most_recent_notes
列(我們需要忽略列ire_1
和ire_2
),基於以下標准:
id
與spam_profile_most_recent_notes
中的id
匹配的行,使用audit_records_df
表中id
匹配的行中的相應值spam_profile_most_recent_notes
audit_records_df
中的maliciousness_level
級別和suspicious_counts
計數。 填充之后, audit_records_df
表應該是這樣的:
ID | 審計類型 | 審計日期 | 惡意級別 | 可疑計數 |
---|---|---|---|---|
123456 | 未知 | 2/5/21 | 高的 | 3 |
123456 | 清除 | 2/6/21 | 高的 | 3 |
123456 | 終止 | 2/8/21 | 高的 | 3 |
345678 | 終止 | 2/5/21 | 高的 | 6 |
我見過一些類似的問題: 有條件地根據 Pandas 中的行匹配,用另一個 DataFrame 的值填充列。 但是,我所看到的只是在 1 列中填寫值,這與我必須為多列填寫值的用例不同。
任何建議將不勝感激。
我認為您可以通過以下方式解決此問題:
audit_record_df
表中刪除malicious_level
級別和suspicious_counts
計數列。spam_profile_most_recent_notes
中的id
、 malicious_level
和suspicious_counts
計數列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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.