Python 数据帧双键字典

Python 数据帧双键字典,python,pandas,dictionary,Python,Pandas,Dictionary,我正在尝试将具有元组键和列表值的字典转换为dataframe,如key1、key2、value。这是字典: dict_f = {'(4312,5135)':[0,0.11,0.22],'(1515,32)':[0.92,0.11,0.65],'(42,56)':[0.2,0.5,0.23]} 我试着这样做: pd.DataFrame({'Keys': dict_f.keys(), 'Values': dict_f.values()}) 但是我无法将键与字典键分开() 我希望结果是这样的

我正在尝试将具有元组键和列表值的字典转换为dataframe,如key1、key2、value。这是字典:

dict_f = {'(4312,5135)':[0,0.11,0.22],'(1515,32)':[0.92,0.11,0.65],'(42,56)':[0.2,0.5,0.23]}
我试着这样做:

pd.DataFrame({'Keys': dict_f.keys(), 'Values': dict_f.values()})
但是我无法将键与字典键分开()

我希望结果是这样的

    key1  key2  value
0 4312  5135 [0,0.11,0.22]
1 1515  32   [0.92,0.11,0.65]
2 42    56   [0.2,0.5,0.23]

似乎您需要从
dict
keys
中使用
multi-index

df = pd.DataFrame(dict_f)
df.columns = df.columns.str.strip('()').str.split(',', expand=True)
print (df)
   1515    42  4312
     32    56  5135
0  0.92  0.20  0.00
1  0.11  0.50  0.11
2  0.65  0.23  0.22

print (df.columns)
MultiIndex(levels=[['1515', '42', '4312'], ['32', '5135', '56']],
           labels=[[0, 1, 2], [0, 2, 1]])
如果需要其他格式:

s = pd.Series(dict_f)
#if keys are strings, convert to tuples
s.index = s.index.str.strip('()').str.split(',', expand=True)
print (s)
1515  32      [0.92, 0.11, 0.65]
42    56        [0.2, 0.5, 0.23]
4312  5135       [0, 0.11, 0.22]
dtype: object

df1 = s.reset_index()
df1.columns = ['key1','key2','features']
print (df1)
   key1  key2            features
0  1515    32  [0.92, 0.11, 0.65]
1    42    56    [0.2, 0.5, 0.23]
2  4312  5135     [0, 0.11, 0.22]

我用上面的代码解决了这个问题,但我认为必须有一个简单的方法

检查我对代码所做的编辑是否正确请,我删除了一些不正确的空格和单引号。还包括您得到的输出/错误以及所需的输出。谢谢您的回答,但我需要另一种格式。请原谅我糟糕的网速,我刚刚修改了我的描述,我想我有更简单的解决方案,请检查编辑后的答案。该函数应该从字典返回数据帧,而不是从另一个df返回df
def pkl_dict_to_df(df):
        data_df = pd.DataFrame({'keys': df.keys(), 'features': df.values()})
        data_df['key1'] = data_df['keys'].apply(lambda x: x[0])
        data_df['key2'] = data_df['keys'].apply(lambda x: x[1])
        return data_df[['key1','key2','features']]