#python
#python
Вопрос:
Я запустил этот код, но пытаюсь сохранить его в csv-файл, но я получил сообщение об ошибке.
import pandas as pd
from blocklib import generate_candidate_blocks
from blocklib import generate_blocks
from blocklib.evaluation import assess_blocks_2party
dd = pd.read_csv('file path\page.csv')
blocking_config = {
"type": "p-sig",
"version": 1,
"config": {
"blocking-features": [1, 2],
# "record-id-col": 0,
"filter": {
"type": "ratio",
"max": 0.02,
"min": 0.00,
},
"blocking-filter": {
"type": "bloom filter",
"number-hash-functions": 4,
"bf-len": 2048,
},
"signatureSpecs": [
[
{"type": "characters-at", "config": {"pos": [0]}, "feature": 1},
{"type": "characters-at", "config": {"pos": [0]}, "feature": 2},
],
[
{"type": "metaphone", "feature": 1},
{"type": "metaphone", "feature": 2},
]
]
}
}
pp = dd.to_dict(orient='split')['data']
print("Example PII", pp[0])
block_obj = generate_candidate_blocks(pp, blocking_config)
print(block_obj.state)
list(block_obj.blocks.keys())[0]
ss = pd.read_csv('file path\page2.csv')
hh = ss.to_dict(orient='split')['data']
block_obj2 = generate_candidate_blocks(hh, blocking_config)
print(block_obj2.state)
print(list(block_obj2.blocks.keys())[0])
print(list(block_obj2.blocks.values())[1])
filtered_blocks1, filtered_blocks2 = generate_blocks([block_obj, block_obj2], K=2)
print('page: {} out of {} blocks are in common'.format(len(filtered_blocks1), len(block_obj.blocks)))
print('page2: {} out of {} blocks are in common'.format(len(filtered_blocks2), len(block_obj2.blocks)))
Я пытался использовать функцию ‘to_csv’, но выдает ошибку
filtered_blocks1.to_csv('file path\file1.csv' , index = True)
Ошибка здесь:
AttributeError: 'dict' object has no attribute 'to_csv'
Вывод осуществляется с помощью двух файлов csv. Как сохранить полученный результат в файл csv?
Комментарии:
1. Преобразуйте этот словарь filtered_blocks1 в dataframe, затем вы можете записать в формате csv.
pd.DataFrame.from_dict(data)
Ответ №1:
filtered_blocks1
это словарь. для использования to_csv
в качестве
filtered_blocks1.to_csv('file path\file1.csv' , index = True)
filtered_blocks1
должен быть фрейм данных. Обратитесь к документации
вы должны сделать что-то вроде:
pd.DataFrame.from_dict(filtered_blocks1)
pd.to_csv('file path\file1.csv' , index = True)
Комментарии:
1. Я пробовал эту команду, но она хранит все данные всего в двух строках:
dd = pd.DataFrame.from_dict([filtered_blocks3], orient='columns', dtype=None, columns=None) dd.to_csv('file path\file1.csv' , index = True)