【问题标题】:how to create a dict from row in sublist?如何从子列表中的行创建字典?
【发布时间】:2020-04-07 16:15:41
【问题描述】:

有了这个数据框:

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】:

您可以使用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']]})

【讨论】:

  • 不可能像 *[1] if >1 ?例如,在 6 的情况下,您需要为每个 ==2,==3,==4,==5,==6 创建。
  • 我将此选项添加到我的答案中
猜你喜欢
  • 2019-02-13
  • 2021-09-01
  • 1970-01-01
  • 2018-11-06
  • 2022-01-16
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多