将Python数据帧转换为具有索引的字典

将Python数据帧转换为具有索引的字典,python,dataframe,dictionary,Python,Dataframe,Dictionary,我正在尝试将dataframe转换为dictionary(因为它们在按键过滤时速度更快) 我目前正在使用 t3 = time() r={} for i in df.index.unique(): r[i]=[] r[i].append(df.loc[i].values) print(round((time()-t3), 1), "s") 这种类型的转换很慢。还有别的办法吗?我希望数据帧的索引作为键,行作为值,在一个键上有多个值使用pandas.datafra

我正在尝试将dataframe转换为dictionary(因为它们在按键过滤时速度更快) 我目前正在使用

t3 = time()
r={}
for i in df.index.unique():
    r[i]=[]
    r[i].append(df.loc[i].values)
print(round((time()-t3), 1), "s")

这种类型的转换很慢。还有别的办法吗?我希望数据帧的索引作为键,行作为值,在一个键上有多个值

使用
pandas.dataframe.to_dict
在转置后将索引作为键,行值作为值:

import pandas as pd

df = pd.DataFrame({'col1': [1, 2], 'col2': ['a', 'b']})
r = df.T.to_dict('list')
print(r)
输出:

{0: [1, 'a'], 1: [2, 'b']}

使用
pandas.DataFrame.to_dict
在转置后获取索引作为键,行值作为值:

import pandas as pd

df = pd.DataFrame({'col1': [1, 2], 'col2': ['a', 'b']})
r = df.T.to_dict('list')
print(r)
输出:

{0: [1, 'a'], 1: [2, 'b']}

我能够使用以下方法将具有多个重复索引的数据帧转换为字典:

dicti={}
for line in df.itertuples():
   if line.index not in dicti:
      dicti[line.index]=[]
      dicti[line.index].append(list(line))
   else:
      dicti[line.index].append(list(line))


对于600k行,运行时间为5秒,我能够使用以下方法将具有多个重复索引的数据帧转换为字典:

dicti={}
for line in df.itertuples():
   if line.index not in dicti:
      dicti[line.index]=[]
      dicti[line.index].append(list(line))
   else:
      dicti[line.index].append(list(line))


对于600k行的5秒运行时间

我尝试过这个方法,但问题是即使一个键有多个值,它也会为一个键返回一个值。我尝试过这个方法,但问题是即使一个键有多个值,它也会为一个键返回一个值。您能提供一个例子吗一个例子