我试图遍历大熊猫中的数据框,并根据列中的值生成字典。每当列中的值等于3时,我都会捕获列名。
Sample Variable 1 Variable 2 Variable 3
Sample 1 1 3 1
Sample 2 3 0 3
Sample 3 3 3 3
Sample 4 2 1 3
我有兴趣创建一本给我的字典:
{'Sample 1': [Variable 2], 'Sample 2': [Variable 1, Variable3], 'Sample 3': [Variable 1, Variable 2, Variable 3], 'Sample 4': [Variable3]}
答案 0 :(得分:3)
您可以通过将DataFrame转换为dict
,然后应用字典理解来获取等于3的变量的列表。
df_dict = df.to_dict(orient="index")
{k: [k1 for (k1, v1) in v.items() if v1 == 3] for (k, v) in df_dict.items()}
答案 1 :(得分:2)
设置
df = pd.DataFrame({'Sample': ['Sample 1', 'Sample 2', 'Sample 3', 'Sample 4'], 'Variable 1': [1,3,3,2], 'Variable 2': [3,0,3,1], 'Variable 3': [1,3,3,3]})
set_index
和 unstack
:
s = df.set_index('Sample').unstack().reset_index()
然后 groupby
和 apply
,最后是 to_dict
:
s[s[0].eq(3)].groupby('Sample')['level_0'].apply(list).to_dict()
{'Sample 1': ['Variable 2'],
'Sample 2': ['Variable 1', 'Variable 3'],
'Sample 3': ['Variable 1', 'Variable 2', 'Variable 3'],
'Sample 4': ['Variable 3']}