如何从子列表中的行创建字典?

时间:2019-12-14 13:37:06

标签: python pandas dictionary

  

使用此DataFrame:

Gp  Wo Me CHi
1   0   1   0
2   1   0   0
3   0   1   0
4   1   0   0
5   0   2   0
6   1   0   0

我想创建一个像这样的字典:

a={'Gp':['Wo', 'Me','CHi']}

但是在“ Gp”列第5行的情况下,“ Me”列的值为2,我该如何转换为该值:

a={5:[0, [1,1],0]}

如果值> 1,则创建另一个列表:

1 个答案:

答案 0 :(得分:0)

您可以使用df.itterrows()并检查“ Me”列的行值是否等于2并编写一条if语句:

for index, row in df.iterrows():
    if row['Me'] == 2:
        print({row['Gp']: [row['Wo'], [1, 1], row['CHi']]})
    else:
        print({row['Gp']: [row['Wo'], row['Me'], row['CHi']]})

这将输出以下字典:

  

{1:[0,1,0]}

     

{2:[1、0、0]}

     

{3:[0,1,0]}

     

{4:[1、0、0]}

     

{5:[0,[1,1],0]}

     

{6:[1、0、0]}

编辑基于评论:

for index, row in df.iterrows():
    if row['Me'] <= 1:
        print({row['Gp']: [row['Wo'], row['Me'], row['CHi']]})
    else:
        print({row['Gp']: [row['Wo'], [1 for _ in range(row['Me'])], row['CHi']]})