我有一個包含幾個 csv 檔案的檔案夾。目錄中 csv 檔案的資料框示例:
d1 = {'timestamp': [2013-01-30, 2015-02-29, 2014-03-25, 2016-01-01, 2018-02-20,
2012-05-05, 2018-02-04],
'site': ['plus.google.com','vk.com','yandex.ru','plus.google.com','vk.com', 'oracle.com', 'oracle.com']}
df1 = pd.DataFrame(data = d)
d2 = {'timestamp': [2013-01-30, 2015-02-29, 2014-03-25, 2016-01-01, 2018-02-20,],
'site': ['plus.google.com','meduza.ru','yandex.ru','google.com', 'meduza.ru'}
df2 = pd.DataFrame(data = d2)
我需要創建一個函式,接受到檔案目錄的路由并回傳站點頻率字典(檔案目錄中的所有站點一個),其唯一站點名稱如下:{'site_string': [site_id, site_freq]} 對于我們的示例,它將是:{'vk.com': (1, 2), 'plus.google.com': (2, 3), 'yandex.ru': (3, 2), 'meduza.ru': (4, 2), 'oracle.com': (5, 2), 'google.com': (6, 1)}
我嘗試將 value_counts() 應用于每個資料幀,將它們制作成字典并嘗試連接字典,但在這種情況下會洗掉重復項。我該如何解決這個問題?我該怎么辦?
def prepare_train_set(path_to_csv_files):
frequency = {}
for filename in glob(f'{path_to_csv_files}/*'):
sub_iterationed_df = pd.read_csv(filename)
value_counts_dict = dict(sub_iterationed_df["site"].value_counts())
frequency.update(value_counts_dict)
return frequency
此外,我嘗試從 value_counts() 字典的鍵和值創建串列,然后使用 zip 函式創建字典,但出現錯誤“串列分配索引超出范圍”。為什么會發生此錯誤,如何繞過該錯誤?
def CheckForDuplicates(keys_list, values_list):
keys_list = list(value_counts_dict.keys())
values_list = list(value_counts_dict.values())
keys_list_constant = keys_list[:]
values_list_constant = values_list[:]
for i in range(len(keys_list_constant)):
checking_dup_keys_list = keys_list[:i]
checking_dup_values_list = values_list[:i]
key_value = keys_list_constant[i]
if key_value in checking_dup_keys_list:
duplicate_index = checking_dup_keys_list.index(key_value)
values_list[duplicate_index] = values_list[duplicate_index] values_list_constant[i]
del values_list[i]
del keys_list[i]
return(keys_list, values_list)
CheckForDuplicates(keys_list, values_list)
uj5u.com熱心網友回復:
您可以使用 aCounter而不是普通字典:
from collections import Counter
def prepare_train_set(path_to_csv_files):
frequency = Counter()
for filename in glob(f'{path_to_csv_files}/*'):
sub_iterationed_df = pd.read_csv(filename)
value_counts_dict = sub_iterationed_df['site'].value_counts().to_dict()
frequency.update(value_counts_dict)
return frequency
從檔案:
update([iterable-or-mapping]):
元素是從另一個映射(或計數器)的可迭代或附加項中計算出來的。Likedict.update()but 添加計數而不是替換它們。
或連接所有資料幀并.value_counts()隨后獲取。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/468991.html
