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

问题描述 投票:-1回答:1

使用此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,则像创建另一个列表一样:

python pandas dictionary
1个回答
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]}] >>

EDIT

根据评论:
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']]})
© www.soinside.com 2019 - 2024. All rights reserved.