首页 > 解决方案 > 从具有部分相同值的字典创建 DataFrame

问题描述

我正在使用一个函数来创建一个包含键和值的字典。有些值是唯一的,有些则不是。实际上我想使用所有唯一值作为索引和键作为列名,如果键:值对存在,请在此单元格中填写“x”。

伪代码:

def some_function():
   dict = create a dictionary
   print(dict)
   dataframe = create_Dataframe
   print(data_frame)

out:
{k1: [1,2,3,4], k2: [2,3,5,6]}

     k1    k2 
1    x     NaN   
2    x     x 
3    x     x   
4    x     Nan   
5    NaN   x
6    NaN   x  
 

感谢大家!

标签: pandasdictionary

解决方案


诀窍是创建一个字典,其中键为元组,(i, j)其中i值将在索引中j结束,值将在列中结束。 pd.Series构造函数将从第一级和第二级pd.MultiIndex的元组中生成一个。当我们都在正确的地方。ijunstack

匹配OP输出

pd.Series({(v, k): 'x' for k in out for v in out[k]}).unstack()

    k1   k2
1    x  NaN
2    x    x
3    x    x
4    x  NaN
5  NaN    x
6  NaN    x

1 和 0(更合理,imo)

pd.Series({(v, k): 1 for k in out for v in out[k]}).unstack(fill_value=0)

   k1  k2
1   1   0
2   1   1
3   1   1
4   1   0
5   0   1
6   0   1

设置

out = {'k1': [1,2,3,4], 'k2': [2,3,5,6]}

推荐阅读