【问题标题】:How to print specific output based on condition from two variables如何根据两个变量的条件打印特定输出
【发布时间】:2021-01-29 17:17:34
【问题描述】:

我有一个这样的数据框:

我想要这样的输出:

姓名1:

任务1:

句子1

句子2

任务2:

句子3

名称2:

任务1:

句子4

姓名3:

任务1:

句子5

任务2:

句子6

这是我到目前为止所做的:

for name in df.Name.unique():
    print(name + ' :\n')
    for mission in df.Mission.unique():
        print(mission + ' :\n')
        for index, value in df.Phrases[df.Mission == mission].items():
            print(value)
            print()
    for index, value in df.Phrases[df.Name == name].items():
        print(value)
        print()
       
    print('\n')

但输出与我获得的不完全一样,我看到出了什么问题,但我不知道如何处理它:

姓名1:

任务1:

句子1

句子2

句子4

句子5

任务2:

句子3

句子6

句子1

句子2

句子3

名称2:

任务1:

句子1

句子2

句子4

句子5

任务2:

句子3

句子6

句子4

姓名3:

任务1:

句子1

句子2

句子4

句子5

任务2:

句子3

句子6

句子5

句子6

【问题讨论】:

  • 您未能在内部循环中检查该任务的名称是否相同等等..
  • 哦,我明白了,您认为您可以为我提供一种方法吗?

标签: python python-3.x loops


【解决方案1】:

您可以针对自己的数据框优化代码,但逻辑是一样的:

我的数据框:

代码

for name in df.name.unique():
    print(name)
    for miss in df.mission.unique():
        print('  ' + miss)
        for sentence in df.sentences[(df.name == name) & (df.mission == miss)].tolist():
            print('    ' + sentence)

输出

name1
  mission1
    sentence1
    sentence2
  mission2
    sentence3
name2
  mission1
    sentence4
  mission2
name3
  mission1
    sentence5
  mission2
    sentence6

【讨论】:

  • 太棒了!这几乎就是我想要的!只是一个小细节,但我希望每次只取一个名字,在开始时而不是每次
  • 抱歉,我错过了我的输出。我已经编辑了我的答案以适合您所需的输出。
  • 别担心,没关系。非常感谢 !赞成并接受
  • 您好 :) 还有一个问题:我将您的代码用于我的整个数据库。它完美地工作,除了一件事。它打印任务,即使没有与她相关的句子。你知道如何解决这个问题吗?
  • 我建议提出一个新问题,并用代码和数据显示问题是什么,你想要实现什么,以及你已经尝试过什么(这样其他人可以通知一个新问题:])
猜你喜欢
  • 2021-05-03
  • 1970-01-01
  • 2015-02-17
  • 1970-01-01
  • 2020-10-02
  • 1970-01-01
  • 2021-04-02
  • 2012-01-25
  • 1970-01-01
相关资源
最近更新 更多