【发布时间】:2014-05-30 18:11:55
【问题描述】:
我目前正在制作一个字典,其中名称元组作为键,浮点数作为 {(nameA, nameB) : datavalue, (nameB, nameC) : datavalue ,...} 形式的值p>
值数据来自我制作的 pandas DataFrame 的矩阵,其名称作为索引和列标签。我使用函数createDictionaryKeys() 为名为@987654321@ 的最终字典创建了一个有序的键列表。我遇到的问题是,并非此列表中的所有名称都出现在我的数据矩阵中。我只想在我的最终字典的数据矩阵中包含确实出现的名称。
如何进行这种搜索以避免缓慢的线性 for 循环?我创建了一个字典,其名称为键,如果应该包含它,则值为 1,否则为 0。它的形式为{nameA : 1, nameB: 0, ... },称为allow_dict。我希望用它来做某种哈希搜索。
def createDictionary( keynamefile, seperator, datamatrix, matrixsep):
import pandas as pd
keys = createDictionaryKeys(keynamefile, seperator)
final_dict = {}
data_df = pd.read_csv(open(datamatrix), sep = matrixsep)
pd.set_option("display.max_rows", len(data_df))
df_indices = list(data_df.index.values)
df_cols = list(data_df.columns.values)[1:]
for i in df_indices:
data_df = data_df.rename(index = {i:df_cols[i]})
data_df = data_df.drop("Unnamed: 0", 1)
allow_dict = descriminatePromoters( HARDCODEDFILENAME, SEP, THRESHOLD )
#print ( item for item in df_cols if allow_dict[item] == 0 ).next()
present = [ x for x in keys if x[0] in df_cols and x[1] in df_cols]
for i in present:
final_dict[i] = final_df.loc[i[0],i[1]]
return final_dict
【问题讨论】:
标签: python dictionary pandas