Pandas 从具有部分相同值的字典创建数据帧

Pandas 从具有部分相同值的字典创建数据帧,pandas,dictionary,Pandas,Dictionary,我正在使用一个函数创建一个包含键和值的字典。某些值是唯一的,而其他值则不是。实际上我想使用所有唯一的值作为索引,键作为列名,如果key:value对存在,请在这个单元格中填充一个“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,

我正在使用一个函数创建一个包含键和值的字典。某些值是唯一的,而其他值则不是。实际上我想使用所有唯一的值作为索引,键作为列名,如果key:value对存在,请在这个单元格中填充一个“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  
 

谢谢大家

诀窍是创建一个字典,其中键作为
(i,j)
的元组,其中
i
值将在索引中结束,
j
值将在列中结束
pd.Series
构造函数将从元组中创建一个
pd.MultiIndex
,元组的
i
位于第一级,而
j
位于第二级。当我们
unstack
时,所有内容都将在正确的位置

匹配运算输出
1和0(更合理,国际海事组织)
安装程序
作为一个简单的解决方案,您可以使用:

创造口述 创建空数据帧 目前的结果是:

print(df)

    k1   k2
1  NaN  NaN
2  NaN  NaN
3  NaN  NaN
4  NaN  NaN
5  NaN  NaN
6  NaN  NaN
用“x”填充 结果将是:

print(df)

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

保罗,谢谢你的快速回复。我自己找到了一个解决办法:dict_e={'k':[1,2,4,6],'l':[1,3,4,5]}index=sorted({x代表v中的v.values(),代表v中的x})columns=list(dict_e.keys())list1=list(map(lambda x:x代表dict_e['k',k',index))list2 list=list(map(lambda x:x代表val2,index))data=list(zip(list1,2))df=pd.DataFrame(data,index=index,columns)但既然你的更容易理解,我就这么做吧!
out = {'k1': [1,2,3,4], 'k2': [2,3,5,6]}
my_dict = {"k1": [1,2,3,4], "k2": [2,3,5,6]}
import itertools

idxs = sorted(list(set(itertools.chain.from_iterable(my_dict.values()))))
cols = list(my_dict.keys())

df = pd.DataFrame(columns=cols, index=idxs)
print(df)

    k1   k2
1  NaN  NaN
2  NaN  NaN
3  NaN  NaN
4  NaN  NaN
5  NaN  NaN
6  NaN  NaN
for k, v in my_dict.items():
    df[k][v] = "x"
print(df)

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