将Python数据帧转换为具有索引的字典
我正在尝试将dataframe转换为dictionary(因为它们在按键过滤时速度更快) 我目前正在使用将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
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秒运行时间我尝试过这个方法,但问题是即使一个键有多个值,它也会为一个键返回一个值。我尝试过这个方法,但问题是即使一个键有多个值,它也会为一个键返回一个值。您能提供一个例子吗一个例子