Добавление еще одного столбца в фрейм данных из одного файла JsonPython

Программы на Python
Гость
Добавление еще одного столбца в фрейм данных из одного файла Json

Сообщение Гость »


Мне интересно попытаться добавить еще один столбец в мой фрейм данных из набора данных, но я не могу понять, что делаю неправильно. Я использую следующий код, и вот пример JSON, который я использую. Если я удалю один из двух других столбцов, кроме имени хоста, все будет работать нормально.

file = open("assets.json",) file_json = json.load(файл) df = (pd .concat(objs=[pd.json_normalize(data=x) для x в file_json]) .filter(items=["asset.hostname", "plugin.solution", "plugin.cve"]) .dropna(как="любой") .rename(columns=lambda x: x.split(".")[-1]) .explode(столбец="решение") .explode(столбец="cve") .groupby(by="имя хоста", as_index=False) .solution.apply(lambda x: ", ".join(map(str, x))) .cve.apply(lambda x: ", ".join(map(str, x))) ) печать (дф) [ [ { "объект": { "agent_uuid": "Джон Смит", "device_type": "отредактировано", "fqdn": "отредактировано", "имя хоста": "компьютер1", "ipv4": "отредактировано", "ipv6": "отредактировано", "last_authenticated_results": "отредактировано", "mac_address": "отредактировано", "netbios_name": "отредактировано", "network_id": "0отредактировано", "Операционная система": [ "отредактировано" ], "отслеживается": правда, "uuid": "отредактировано" }, "first_found": "отредактировано", "проиндексировано": "отредактировано", "last_found": "отредактировано", "выход": "отредактировано", "плагин": { "делать ставку": [ 179635 ], «checks_for_default_account»: ложь, «checks_for_malware»: ложь, "КПЕ": [ "отредактировано" ], "cve": [ «CVE-777-7777» ], «cvss_base_score»: 0,0, «cvss_temporal_score»: 0,4, "cvss_temporal_vector": { "эксплуатируемость": "отредактировано", "сырой": "отредактированный", "remediation_level": "отредактировано", "report_confidence": "отредактировано" }, "cvss_vector": { "access_complexity": "отредактировано", "access_vector": "отредактировано", "аутентификация": "отредактировано", "availability_impact": "отредактировано", "confidentiality_impact": "отредактировано", "integrity_impact": "отредактировано", «сырой»: «отредактированный» }, «cvss3_base_score»: 0,8, "cvss3_temporal_score": 0, "cvss3_temporal_vector": { "эксплуатируемость": "отредактировано", "сырой": "отредактированный", "remediation_level": "отредактировано", "report_confidence": "отредактировано" }, "cvss3_vector": { "access_complexity": "отредактировано", "access_vector": "отредактировано", "availability_impact": "отредактировано", "confidentiality_impact": "отредактировано", "integrity_impact": "отредактировано", "raw": "Credacted" }, "описание": "отредактировано", «exploit_available»: ложь, «exploit_framework_canvas»: ложь, «exploit_framework_core»: ложь, «exploit_framework_d2_elliot»: ложь, «exploit_framework_exploithub»: ложь, «exploit_framework_metasploit»: ложь, "exploitability_ease": "отредактировано", «exploited_by_malware»: ложь, "exploited_by_nessus": ложь, "семья": "отредактировано", "family_id": 7, «has_patch»: ложь, "идентификатор": 179635, "in_the_news": ложь, "modification_date": "отредактировано", "name": "Плохой эксплойт 1", "patch_publication_date": "отредактировано", "Дата публикации": "отредактировано", "risk_factor": "отредактировано", "смотрите также": [ "отредактировано" ], "solution": "Обновите среду выполнения .NET Core до версии 3.1.23, 5.0.15 или 6.0.3.", "stig_severity": "отредактировано", "синопсис": "отредактировано", «unsupported_by_vendor»: ложь, "впр": { "водители": { "age_of_vuln": { "lower_bound": 8, «верхний_баунд»: 30 }, «cvss3_impact_score»: 0,9, "exploit_code_maturity": "отредактировано", "product_coverage": "отредактировано", "threat_intensity_last28": "отредактировано", "threat_sources_last28": [ "отредактировано" ] }, «оценка»: 0, «обновлено»: «отредактировано» }, "vuln_publication_date": "отредактировано", "внешние ссылки": [ ] }, "порт": { «порт»: 0, "протокол": "TCP" }, "сканировать": { "schedule_uuid": "отредактировано", "started_at": "отредактировано", "uuid": "отредактировано" }, "серьезность": "отредактировано", «severity_default_id»: 3, "severity_id": 3, "severity_modification_type": "ПРИНЯТО", "состояние": "открыто" } ], [ { "объект": { "agent_uuid": "Ян Томас", "device_type": "отредактировано", "fqdn": "отредактировано", "имя хоста": "компьютер1", "ipv4": "отредактировано", "ipv6": "отредактировано", "last_authenticated_results": "отредактировано", "mac_address": "отредактировано", "netbios_name": "отредактировано", "network_id": "0отредактировано", "Операционная система": [ "отредактировано" ], "отслеживается": правда, "uuid": "отредактировано" }, "first_found": "отредактировано", "проиндексировано": "отредактировано", "last_found": "отредактировано", "выход": "отредактировано", "плагин": { "делать ставку": [ 179635 ], «checks_for_default_account»: ложь, «checks_for_malware»: ложь, "КПЕ": [ "отредактировано" ], "cve": [ «CVE-999-9999» ], «cvss_base_score»: 0,0, «cvss_temporal_score»: 0,4, "cvss_temporal_vector": { "эксплуатируемость": "отредактировано", "сырой": "отредактированный", "remediation_level": "отредактировано", "report_confidence": "отредактировано" }, "cvss_vector": { "access_complexity": "отредактировано", "access_vector": "отредактировано", "аутентификация": "отредактировано", "availability_impact": "отредактировано", "confidentiality_impact": "отредактировано", "integrity_impact": "отредактировано", «сырой»: «отредактированный» }, «cvss3_base_score»: 0,8, "cvss3_temporal_score": 0, "cvss3_temporal_vector": { "эксплуатируемость": "отредактировано", "сырой": "отредактированный", "remediation_level": "отредактировано", "report_confidence": "отредактировано" }, "cvss3_vector": { "access_complexity": "отредактировано", "access_vector": "отредактировано", "availability_impact": "отредактировано", "confidentiality_impact": "отредактировано", "integrity_impact": "отредактировано", "raw": "Credacted" }, "описание": "отредактировано", «exploit_available»: ложь, «exploit_framework_canvas»: ложь, «exploit_framework_core»: ложь, «exploit_framework_d2_elliot»: ложь, «exploit_framework_exploithub»: ложь, «exploit_framework_metasploit»: ложь, "exploitability_ease": "отредактировано", «exploited_by_malware»: ложь, "exploited_by_nessus": ложь, "семья": "отредактировано", "family_id": 7, «has_patch»: ложь, "идентификатор": 179635, "in_the_news": ложь, "modification_date": "отредактировано", "name": "Плохой эксплойт 1", "patch_publication_date": "отредактировано", "publication_date": "отредактировано", "risk_factor": "отредактировано", "смотрите также": [ "отредактировано" ], "solution": "Добавить и включить значение реестра. Ерунда:\n - HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Nonsense\\Nonsense\\Config\\Nonsene3\n\nКроме того, в 64-битных ОС добавьте и включите значение реестра Nonsense64:\n\n - HKEY_LOCAL_MACHINE\\Software\\Wow6432Node\\Microsoft\\Stuff\\Nonsense64\\Config\\Supernonsense", "stig_severity": "отредактировано", "синопсис": "отредактировано", «unsupported_by_vendor»: ложь, "впр": { "водители": { "age_of_vuln": { "lower_bound": 8, «верхний_баунд»: 30 }, «cvss3_impact_score»: 0,9, "exploit_code_maturity": "отредактировано", "product_coverage": "отредактировано", "threat_intensity_last28": "отредактировано", "threat_sources_last28": [ "отредактировано" ] }, «оценка»: 0, «обновлено»: «отредактировано» }, "vuln_publication_date": "отредактировано", "внешние ссылки": [ ] }, "порт": { «порт»: 0, "протокол": "TCP" }, "сканировать": { "schedule_uuid": "отредактировано", "started_at": "отредактировано", "uuid": "отредактировано" }, "серьезность": "отредактировано", «severity_default_id»: 3, "severity_id": 3, "severity_modification_type": "НЕТ", "состояние": "открыто" } ], [ { "объект": { "agent_uuid": "Фрэнк Касл", "device_type": "отредактировано", "fqdn": "отредактировано", "имя хоста": "Компьютер2", "ipv4": "отредактировано", "ipv6": "отредактировано", "last_authenticated_results": "отредактировано", "mac_address": "отредактировано", "netbios_name": "отредактировано", "network_id": "отредактировано", "Операционная система": [ "отредактировано" ], "отслеживается": правда, "uuid": "отредактировано" }, "first_found": "отредактировано", "проиндексировано": "отредактировано", "last_found": "отредактировано", "выход": "отредактировано", "плагин": { "делать ставку": [ 179635 ], «checks_for_default_account»: ложь, «checks_for_malware»: ложь, "КПЕ": [ "отредактировано" ], «cvss_base_score»: 0,0, «cvss_temporal_score»: 0,4, "cvss_temporal_vector": { «эксплуатируемость»: "отредактировано", "сырой": "отредактированный", "remediation_level": "отредактировано", "report_confidence": "отредактировано" }, "cvss_vector": { "access_complexity": "отредактировано", "access_vector": "отредактировано", "аутентификация": "отредактировано", "availability_impact": "отредактировано", "confidentiality_impact": "отредактировано", "integrity_impact": "отредактировано", «сырой»: «отредактированный» }, «cvss3_base_score»: 0,8, "cvss3_temporal_score": 0, "cvss3_temporal_vector": { "эксплуатируемость": "отредактировано", "сырой": "отредактированный", "remediation_level": "отредактировано", "report_confidence": "отредактировано" }, "cvss3_vector": { "access_complexity": "отредактировано", "access_vector": "отредактировано", "availability_impact": "отредактировано", "confidentiality_impact": "отредактировано", "integrity_impact": "отредактировано", «сырой»: «отредактированный» }, "описание": "отредактировано", «exploit_available»: ложь, «exploit_framework_canvas»: ложь, «exploit_framework_core»: ложь, «exploit_framework_d2_elliot»: ложь, «exploit_framework_exploithub»: ложь, «exploit_framework_metasploit»: ложь, "exploitability_ease": "отредактировано", «exploited_by_malware»: ложь, "exploited_by_nessus": ложь, "семья": "отредактировано", "family_id": 7, «has_patch»: ложь, "идентификатор": 179635, "in_the_news": ложь, "modification_date": "отредактировано", "name": "Плохой эксплойт 1", "patch_publication_date": "отредактировано", "publication_date": "отредактировано", "risk_factor": "отредактировано", "смотрите также": [ "отредактировано" ], "solution": "Обновить до версии 7.3", "stig_severity": "отредактировано", "синопсис": "отредактировано", «unsupported_by_vendor»: ложь, "впр": { "водители": { "age_of_vuln": { "lower_bound": 8, «верхний_баунд»: 30 }, «cvss3_impact_score»: 0,9, "exploit_code_maturity": "отредактировано", "product_coverage": "отредактировано", "threat_intensity_last28": "отредактировано", "threat_sources_last28": [ "отредактировано" ] }, «оценка»: 0, «обновлено»: «отредактировано» }, "vuln_publication_date": "отредактировано", "внешние ссылки": [ ] }, "порт": { «порт»: 0, "протокол": "TCP" }, "сканировать": { "schedule_uuid": "отредактировано", "started_at": "отредактировано", "uuid": "отредактировано" }, "серьезность": "отредактировано", «severity_default_id»: 3, "severity_id": 3, "severity_modification_type": "НЕТ", "состояние": "открыто" } ], [ { "объект": { "agent_uuid": "Ян Томас", "device_type": "отредактировано", "fqdn": "отредактировано", "имя хоста": "компьютер2", "ipv4": "отредактировано", "ipv6": "отредактировано", "last_authenticated_results": "отредактировано", "mac_address": "отредактировано", "netbios_name": "отредактировано", "network_id": "0отредактировано", "Операционная система": [ "отредактировано" ], "отслеживается": правда, "uuid": "отредактировано" }, "first_found": "отредактировано", "проиндексировано": "отредактировано", "last_found": "отредактировано", "выход": "отредактировано", "плагин": { "делать ставку": [ 179635 ], «checks_for_default_account»: ложь, «checks_for_malware»: ложь, "КПЕ": [ "отредактировано" ], "cve": [ «CVE-999-9999» ], «cvss_base_score»: 0,0, «cvss_temporal_score»: 0,4, "cvss_temporal_vector": { "эксплуатируемость": "отредактировано", "сырой": "отредактированный", "remediation_level": "отредактировано", "report_confidence": "отредактировано" }, "cvss_vector": { "access_complexity": "отредактировано", "access_vector": "отредактировано", "аутентификация": "отредактировано", "availability_impact": "отредактировано", "confidentiality_impact": "отредактировано", "integrity_impact": "отредактировано", «сырой»: «отредактированный» }, «cvss3_base_score»: 0,8, "cvss3_temporal_score": 0, "cvss3_temporal_vector": { "эксплуатируемость": "отредактировано", "сырой": "отредактированный", "remediation_level": "отредактировано", "report_confidence": "отредактировано" }, "cvss3_vector": { "access_complexity": "отредактировано", "access_vector": "отредактировано", "availability_impact": "отредактировано", "confidentiality_impact": "отредактировано", "integrity_impact": "отредактировано", «сырой»: «отредактированный» }, "описание": "отредактировано", «exploit_available»: ложь, «exploit_framework_canvas»: ложь, «exploit_framework_core»: ложь, «exploit_framework_d2_elliot»: ложь, «exploit_framework_exploithub»: ложь, «exploit_framework_metasploit»: ложь, "exploitability_ease": "отредактировано", «exploited_by_malware»: ложь, "exploited_by_nessus": ложь, "семья": "отредактировано", "family_id": 7, «has_patch»: ложь, "идентификатор": 179635, "in_the_news": ложь, "modification_date": "отредактировано", "name": "Плохой эксплойт 1", "patch_publication_date": "отредактировано", "publication_date": "отредактировано", "risk_factor": "отредактировано", "смотрите также": [ "отредактировано" ], "solution": "Обновить до версии 6.0", "stig_severity": "отредактировано", "синопсис": "отредактировано", «unsupported_by_vendor»: ложь, "впр": { "водители": { "age_of_vuln": { "lower_bound": 8, «верхний_баунд»: 30 }, «cvss3_impact_score»: 0,9, "exploit_code_maturity": "отредактировано", "product_coverage": "отредактировано", "threat_intensity_last28": "отредактировано", "threat_sources_last28": [ "отредактировано" ] }, «оценка»: 0, "обновлено": "отредактировано" }, "vuln_publication_date": "отредактировано", "внешние ссылки": [ ] }, "порт": { «порт»: 0, "протокол": "TCP" }, "сканировать": { "schedule_uuid": "отредактировано", "started_at": "отредактировано", "uuid": "отредактировано" }, "серьезность": "отредактировано", «severity_default_id»: 3, "severity_id": 3, "severity_modification_type": "НЕТ", "состояние": "открыто" } ], [ { "объект": { "agent_uuid": "Ян Томас", "device_type": "отредактировано", "fqdn": "отредактировано", "имя хоста": "компьютер1", "ipv4": "отредактировано", "ipv6": "отредактировано", "last_authenticated_results": "отредактировано", "mac_address": "отредактировано", "netbios_name": "отредактировано", "network_id": "0отредактировано", "Операционная система": [ "отредактировано" ], "отслеживается": правда, "uuid": "отредактировано" }, "first_found": "отредактировано", "проиндексировано": "отредактировано", "last_found": "отредактировано", "выход": "отредактировано", "плагин": { "делать ставку": [ 179635 ], «checks_for_default_account»: ложь, «checks_for_malware»: ложь, "КПЕ": [ "отредактировано" ], "cve": [ «CVE-888-9999» ], «cvss_base_score»: 0,0, «cvss_temporal_score»: 0,4, "cvss_temporal_vector": { "эксплуатируемость": "отредактировано", "сырой": "отредактированный", "remediation_level": "отредактировано", "report_confidence": "отредактировано" }, "cvss_vector": { "access_complexity": "отредактировано", "access_vector": "отредактировано", "аутентификация": "отредактировано", "availability_impact": "отредактировано", "confidentiality_impact": "отредактировано", "integrity_impact": "отредактировано", «сырой»: «отредактированный» }, «cvss3_base_score»: 0,8, "cvss3_temporal_score": 0, "cvss3_temporal_vector": { "эксплуатируемость": "отредактировано", "сырой": "отредактированный", "remediation_level": "отредактировано", "report_confidence": "отредактировано" }, "cvss3_vector": { "access_complexity": "отредактировано", "access_vector": "отредактировано", "availability_impact": "отредактировано", "confidentiality_impact": "отредактировано", "integrity_impact": "отредактировано", "raw": "Credacted" }, "описание": "отредактировано", «exploit_available»: ложь, «exploit_framework_canvas»: ложь, «exploit_framework_core»: ложь, «exploit_framework_d2_elliot»: ложь, «exploit_framework_exploithub»: ложь, «exploit_framework_metasploit»: ложь, "exploitability_ease": "отредактировано", «exploited_by_malware»: ложь, "exploited_by_nessus": ложь, "семья": "отредактировано", "family_id": 7, «has_patch»: ложь, "идентификатор": 179635, "in_the_news": ложь, "modification_date": "отредактировано", "name": "Плохой эксплойт 1", "patch_publication_date": "отредактировано", "Дата публикации": "отредактировано", "risk_factor": "отредактировано", "смотрите также": [ "отредактировано" ], "solution": "Обновить в Microsoft Store", "stig_severity": "отредактировано", "синопсис": "отредактировано", «unsupported_by_vendor»: ложь, "впр": { "водители": { "age_of_vuln": { "lower_bound": 8, «верхний_баунд»: 30 }, «cvss3_impact_score»: 0,9, "exploit_code_maturity": "отредактировано", "product_coverage": "отредактировано", "threat_intensity_last28": "отредактировано", "threat_sources_last28": [ "отредактировано" ] }, «оценка»: 0, «обновлено»: «отредактировано» }, "vuln_publication_date": "отредактировано", "внешние ссылки": [ ] }, "порт": { «порт»: 0, "протокол": "TCP" }, "сканировать": { "schedule_uuid": "отредактировано", "started_at": "отредактировано", "uuid": "отредактировано" }, "серьезность": "отредактировано", «severity_default_id»: 3, "severity_id": 3, "severity_modification_type": "НЕТ", "состояние": "открыто" } ] ] Я получаю следующее сообщение об ошибке

Traceback (самый последний вызов — последний): Файл «C:\Users\Sinpo\Desktop\Python Projects\Exports.Vulns\Exports.Vulns\Exports.Vulns.py», строка 65, в .cve.apply(lambda x: ", ".join(map(str, x))) ^^^ Файл «C:\Users\Sinpo\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\core\generic.py», строка 5989, в __getattr__ вернуть объект.__getattribute__(я, имя) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: объект «DataFrame» не имеет атрибута «cve» Нажмите любую клавишу для продолжения . . . Итак, если я удалю .explode(column="cve") и .cve.apply(lambda x: ", ".join(map(str, x))), я получу такой результат.
>
решение имени хоста 0 компьютер1 Обновление до версии 12 1 компьютер2 Обновление до версии 12 2 компьютер3 Обновление до версии 12 3 компьютер4 Обновление до версии 12 4 компьютер5 Обновление до версии 12 .. ... ... 637 компьютер638 Обновление до версии 12 638 компьютер639 Обновление до версии 12 639 компьютер640 Обновление до версии 12 Компьютер 640641 Обновление до версии 12 641 компьютер642 Обновление до версии 12 [642 строки x 2 столбца] Нажмите любую клавишу для продолжения . . . Я получаю аналогичный результат, когда удаляю часть кода, посвященную решениям.

имя хоста cve 0 компьютер1 CVE-7777-7777, CVE-888-8888 1 компьютер2 CVE-7777-7777, CVE-888-8888 2 компьютера3 CVE-7777-7777, CVE-555-5555, CVE-666-6666 3 компьютер4 CVE-7777-7777, CVE-555-5555, CVE-666-6666 4 компьютер5 CVE-7777-7777, CVE-756-9642, CVE-444-4444 .. ... ... 637 компьютер638 CVE-7777-7777, CVE-999-9999 638 компьютер639 CVE-7777-7777, CVE-756-9642, CVE-444-4444 639 компьютер640 CVE-7777-7777, CVE-756-9642, CVE-444-4444 640 компьютер641 CVE-7777-7777, CVE-555-5555, CVE-666-6666 641 компьютер642 CVE-7777-7777, CVE-888-8888 Джейсон Бейкер, результат — это именно то, что мне нужно.

имя хоста решение cve 0 компьютер1 Обновление до версии 6.7, обновление в Microsoft Store, обновление в Microsoft Store CVE-777-7777, CVE-999-9999, CVE-888-9999 1 компьютер2 Обновление до версии 6.0 CVE-999-9999 Когда я попытался запустить этот код, я получил следующий результат.
Traceback (самый последний вызов — последний): Файл «C:\Users\Sinpo\Desktop\Python Projects\Exports.Vulns\Exports.Vulns\Exports.Vulns.py», строка 61, в .explode(column=["решение", "cve"]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Файл «C:\Users\Sinpo\AppData\Local\Programs\Python\Python311\Lib\site-packages\pandas\core\frame.py», строка 8887, в разнесенном виде поднять ValueError("столбцы должны иметь совпадающее количество элементов") ValueError: столбцы должны иметь совпадающее количество элементов. Нажмите любую клавишу для продолжения . . .

Вернуться в «Python»