

Python3系で以下の流れを実行したいです。  
その中で、最後のinput値を入力した際に今までの入力値が消されて、その値とカウント数字のみで上書きされてしまいます。  
コードでアドバイスを頂ければ幸いです。  
辞書タブの展開場所やif文のロジックがおかしい所あると思いますが、  
よろしくお願いします。

【実現したい事】  
①tsvファイルのNAMEカラムの中から飲食店名を出力（実行済）  
②yesの場合、出力された飲食店名のCOUNTカラムにある数字を＋１（実行済）  
③noの場合、inputで飲食店名を入力させる（実行済）  
④その入力された物がtsvに存在しない場合は追加する（既存のデータが今回入力されたデータに上書きされ、消えてしまう）

[code]

    import pandas as pd
    import random 
    
    file0 = "/Users/apple/Downloads/practice.tsv"
    d = pd.read_table(file0, index_col='NAME')
    
    random_res = random.choice(list(d.index))
    print(f"Would you like {random_res} ?")
    
    user_res = input("yes or no ?")
    if user_res == "yes":
       d.loc[d.index == random_res, "COUNT"] += 1
       d.to_csv(file0, sep="\t")
    
    dic = {}
    favor_res = input("Which restaurant do you prefer ?")
    if favor_res == "":
       print("Thank you for your answer !")
    else:
       favor_res.replace("\t", "_")
    
    if favor_res in dic:
       dic[favor_res] += 1
    else:
       dic[favor_res] = 1
    
    try:
       with open(file0, "w") as f:
       for k, v in dic.items():
          f.write(f"{k}\t{v}\n")
    except IOError as e:
       print(e, file=sys.stderr)  
    
[/code]


CC BY-SA 4.0
2020-03-28T18:16:40.997
65183
2020-03-28T20:53:11.393
34463
question
python3
Python3系で入力値がtsvファイル内にある場合にその要素をカウントして増やしたい


`dic = {}` を使用しているので、せっかく`d`に読み込まれたデータが無視されてしまっています。  
下記のような感じでいかがでしょうか。

ポイント  
1\. 最初の質問が"yes" "no"どちらの場合でも、pandasのto_csvを使用しています。  
2\. 流れが分かれやすいよう、そのままpandasのDataFrameを使用しています。  
3\. practive.tsvのパスをカレントディレクトリに変更しています。

[code]

    #!/usr/bin/env python3
    
    import pandas as pd
    import random
    
    file0 = "./practice.tsv"
    d = pd.read_table(file0, index_col='NAME', dtype={"COUNT": int})
    
    random_res = random.choice(list(d.index))
    print(f"Would you like {random_res} ?")
    
    user_res = input("yes or no ?: ")
    if user_res == "yes":
        d.loc[random_res, "COUNT"] += 1
    else:
        favor_res = input("Which restaurant do you prefer ?: ")
        if favor_res == "":
            print("Thank you for your answer !")
            exit()
        else:
            favor_res.replace("\t", "_")
    
        if favor_res in d.index:
            d.loc[favor_res, "COUNT"] += 1
        else:
            d.loc[favor_res] = {"COUNT": 1}
    
    d.to_csv(file0, sep="\t")
    
[/code]


CC BY-SA 4.0
2020-03-28T20:53:11.393
65184
2020-03-28T20:53:11.393
6092
65183
answer