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