【问题标题】:How to print specific output based on condition from name variable如何根据名称变量的条件打印特定输出
【发布时间】:2021-05-03 10:48:21
【问题描述】:

我有一个这样的数据框data

我想要这样的输出:

  • 名字1

    句子1

    句子2

    句子3

  • 名字2

    句子4

  • 名字3

    句子5

    句子6

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

first = True

for i in range(0, data.shape[0]):
    if data['Name'][i+1] == data['Name'][i] :
        if first:
            first = False
            print(data['Name'][i])
            print()
            print(data['Sentences'][i])
        else:
            print()
            print(data['Sentences'][i])
           
    if data['Name'][i] != data['Name'][i+1] :
        print(data['Name'][i])
        print(data['Sentences'][i])
       
    else :
        print()

但这并没有给我正确的输出,名称没有打印在我想要的位置。我想我在循环中放错了地方或忘记了一些东西,但是什么?

谢谢

编辑:我想我明白了!我想知道我是否正确,这就是我在代码中所做的更改:

first = True

for i in range(0, data.shape[0]):
    if data['Name'][i+1] == data['Name'][i] :
        if first:
            first = False
            print(data['Name'][i])
            print()
            print(data['Sentences'][i])
        else:
            print()
            print(data['Sentences'][i])
           
    if data['Name'][i] != data['Name'][i+1] :
        print(data['Name'][i+1]) #i+1 instead of i
        print(data['Sentences'][i+1])# i+1 instead of i
       
    else :
        print()

【问题讨论】:

    标签: python python-3.x pandas loops if-statement


    【解决方案1】:

    我相信有一种更清洁的方法。

    注意:

    我的 DataFrame 如下所示:

    代码

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

    输出

    name1:
    
    sentence1
    sentence2
    sentence3
    
    
    name2:
    
    sentence4
    
    
    name3:
    
    sentence5
    sentence6
    

    尝试根据您的需要修改上面的代码,看看是否有帮助。

    【讨论】:

    • 名称在末尾,而不是开头。此外,语法(名称:句子,dtype:对象)是无用的,我不能在输出中使用它。但除此之外,它很棒!
    • 我已经编辑了答案以(尝试)更好地满足您的需求。
    • 太棒了,代码比我的少得多!恭喜,你太棒了:)谢谢!
    • 不客气。确保也接受人们可以看到它有解决方案的答案。
    • 我需要两个陈述,但我被卡住了,如果你想再次提供帮助,我重新发布另一个问题:stackoverflow.com/questions/65958966/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 2021-04-02
    • 2012-01-25
    相关资源
    最近更新 更多