回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一本这样的字典:</p>
<pre><code>pred_dict = {('african zebra', 'arabian horse'): [('Blue Whale', 0.49859235), ('Ferrari', 0.5013809), ('african zebra', 0.49264234), ('ara
...: bian horse', 0.5186422), ('bobcat', 0.5096679)], ('cheetah', 'mountain lion'): [('Blue Whale', 0.48881102), ('Ferrari', 0.502793), ('afric
...: an zebra', 0.48751196), ('arabian horse', 0.49272105), ('bobcat', 0.5228181)]}
</code></pre>
<p>要转换为如下数据帧:</p>
<pre><code>Text | Blue Whale | Ferrari | african zebra| arabian horse | bobcat |
('african zebra', 'arabian horse') 0.49859235 0.5013809 0.49264234 0.5186422 0.5096679
('cheetah', 'mountain lion') 0.48881102 0.502793 0.48751196 0.49272105 0.5228181
</code></pre>
<p>给定字典中的每个值都具有完全相同的元组数,元组列表中的第一个值相同。要做的是将dict的键放在“text”列中,然后将元组中的第一个值作为其他列名。值将是分数-浮动。你知道吗</p>
<p>任何建议都会有帮助。以下是我正在尝试的一些东西:</p>
<pre><code>In [12]: text = list(pred_dict.keys())
In [13]: values = list(pred_dict.values())
In [14]: pred_df = pd.DataFrame({'text': text, 'label_scores': values})
In [15]: pred_df
Out[15]:
text label_scores
0 (african zebra, arabian horse) [(Blue Whale, 0.49859235), (Ferrari, 0.5013809...
1 (cheetah, mountain lion) [(Blue Whale, 0.48881102), (Ferrari, 0.502793)...
In [19]: df_scores = pred_df['label_scores']
In [21]: df_scores
Out[21]:
0 [(Blue Whale, 0.49859235), (Ferrari, 0.5013809...
1 [(Blue Whale, 0.48881102), (Ferrari, 0.502793)...
Name: label_scores, dtype: object
In [22]: labels = [t[1] for t in df_scores[0]]
In [23]: labels
Out[23]: [0.49859235, 0.5013809, 0.49264234, 0.5186422, 0.5096679]
In [24]: labels = [t[0] for t in df_scores[0]]
In [25]: labels
Out[25]: ['Blue Whale', 'Ferrari', 'african zebra', 'arabian horse', 'bobcat']
In [26]: scores = [t[1] for t in df_scores[0]]
In [27]: scores
Out[27]: [0.49859235, 0.5013809, 0.49264234, 0.5186422, 0.5096679]
In [28]: scores = [t[1] for t in df_scores[1]]
In [29]: scores
Out[29]: [0.48881102, 0.502793, 0.48751196, 0.49272105, 0.5228181]
</code></pre>