行列表dict的多索引数据框

时间:2017-10-26 03:08:03

标签: python pandas dictionary

我有一个混合类型数据的数据框,有几百万行,每行有50列。在我的数据集预处理期间,我想基于从4列构建的多索引来访问特定行。多索引的列是字符串和日期时间的混合。我想要访问行数百万次,有时读取val,有时要编辑该行的一些值,所以它需要很快。我现在不想在数据库中预先处理它,我只想存储和读取csv中的数据并在我的本地机器上处理它,然后用pandas做一些分析。

我尝试过设置多索引并使用

df.loc[(multi-index),:]

但检索行数据的速度很慢。因此,为了使它更快,我将df转换为dict,其中多索引作为键,行作为值的列表。查找和编辑现在对我有好处,从dataframe =>开始的时间成本dict =>数据帧很小,但是,我想知道我是否可以更快地完成它。

问题是: 内置

pd.DataFrame.to_dict(df,orient='index') 

几乎将数据转换成我想要的数据,但它似乎很慢,因为它将数据放入行dicts的字典中(每行数据本身都是一个字母,其中键是列名),我想要一个行列表的dict(只是每行值的列表)。除了做自己的事情之外,还有办法做到这一点,无论如何这仍然很快: 即。

cols = list(df_test.columns)    
for row in df_test.itertuples():    
    dict_test[(row[16],row[18],row[6],row[10])] = list(row[1:])

注意:回到另一个方向,我可以使用:

df_test = pd.DataFrame.from_dict(dict_test,orient='index')
df_test.columns = cols

0 个答案:

没有答案