質問編集履歴
4
丸投げだったので現段階で試していることを追加
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -40,6 +40,53 @@ 
     | 
|
| 
       40 
40 
     | 
    
         
             
            7,2020-12-09 15:15,2020-12-15 17:00,打刻ミス
         
     | 
| 
       41 
41 
     | 
    
         
             
            8,2020-12-09 15:18,2020-12-09 15:18,
         
     | 
| 
       42 
42 
     | 
    
         
             
            ```
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            ###現段階で試していること・調査中
         
     | 
| 
      
 45 
     | 
    
         
            +
            python側(修正データは読み込んでいません)
         
     | 
| 
      
 46 
     | 
    
         
            +
            nan部分をnanで上書きしたくない(修正データがnanとき、修正元の退勤時間のデータをそのまま使いたい)
         
     | 
| 
      
 47 
     | 
    
         
            +
            Noが1の部分を指定して上書きするコード(間違っている可能性あり)
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            ```python
         
     | 
| 
      
 50 
     | 
    
         
            +
            import csv
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            def read_csv(filename):
         
     | 
| 
      
 54 
     | 
    
         
            +
                f = open(filename, "r")
         
     | 
| 
      
 55 
     | 
    
         
            +
                csv_data = csv.reader(f)
         
     | 
| 
      
 56 
     | 
    
         
            +
                list1 = [e for e in csv_data]
         
     | 
| 
      
 57 
     | 
    
         
            +
                f.close()
         
     | 
| 
      
 58 
     | 
    
         
            +
                return list1
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
            def update_list2d(list1, data):
         
     | 
| 
      
 62 
     | 
    
         
            +
                for i in range(len(list1)):
         
     | 
| 
      
 63 
     | 
    
         
            +
                    if list1[i][0] == data[0]: list1[i] = data
         
     | 
| 
      
 64 
     | 
    
         
            +
                return list1
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
            def write_csv(filename, list1):
         
     | 
| 
      
 68 
     | 
    
         
            +
                with open(filename, 'w', newline='') as f:
         
     | 
| 
      
 69 
     | 
    
         
            +
                    writer = csv.writer(f)
         
     | 
| 
      
 70 
     | 
    
         
            +
                    writer.writerows(list1)
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
                f.close()
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            def main():
         
     | 
| 
      
 76 
     | 
    
         
            +
                #csvファイルのパス
         
     | 
| 
      
 77 
     | 
    
         
            +
                csv_path = "data1.csv"
         
     | 
| 
      
 78 
     | 
    
         
            +
                #csvファイルのロード
         
     | 
| 
      
 79 
     | 
    
         
            +
                csv_data = read_csv(csv_path)
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                data = ["1", "2020-12-09 14:42", nan, ""]
         
     | 
| 
      
 82 
     | 
    
         
            +
                csv_data2 = update_list2d(csv_data, data)
         
     | 
| 
      
 83 
     | 
    
         
            +
                write_csv(csv_path, csv_data2)
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
            if __name__ == '__main__':
         
     | 
| 
      
 87 
     | 
    
         
            +
                main()
         
     | 
| 
      
 88 
     | 
    
         
            +
            ```
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
       43 
90 
     | 
    
         
             
            ### 条件
         
     | 
| 
       44 
91 
     | 
    
         
             
            修正データの空白の部分は修正元のデータをそのまま使う
         
     | 
| 
       45 
92 
     | 
    
         
             
            Noを参照して上の行から下の行までを順次適応させたい
         
     | 
3
タイトル変更
    
        title	
    CHANGED
    
    | 
         @@ -1,1 +1,1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            PythonでCSV 
     | 
| 
      
 1 
     | 
    
         
            +
            PythonでCSVを使って新規ファイルとして出力をしたい
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -53,7 +53,8 @@ 
     | 
|
| 
       53 
53 
     | 
    
         
             
            修正元のNoは修正データの参照元と仮定しています
         
     | 
| 
       54 
54 
     | 
    
         
             
            修正データのNoは修正元の参照先と仮定しています
         
     | 
| 
       55 
55 
     | 
    
         
             
            また、過去に似たような質問があった場合は、リンクを載せていただけると幸いです。
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
       56 
57 
     | 
    
         
             
            ###追記
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
      
 58 
     | 
    
         
            +
            手段は問いません。
         
     | 
| 
       58 
59 
     | 
    
         
             
            おかしい部分があった場合は指摘をいただけると幸いです。
         
     | 
| 
       59 
60 
     | 
    
         
             
            素人なのでどなたかご教授くだされば幸いです。
         
     | 
2
補足追加
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -2,6 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            python3で、修正元のデータに修正データを適応させ修正後のデータの形で出力をしたいです。
         
     | 
| 
       4 
4 
     | 
    
         
             
            pythonとCSVファイルのみで操作をしたいです。
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
       5 
6 
     | 
    
         
             
            ###コード
         
     | 
| 
       6 
7 
     | 
    
         
             
            修正元のデータ
         
     | 
| 
       7 
8 
     | 
    
         
             
            ```csv
         
     | 
| 
         @@ -44,7 +45,11 @@ 
     | 
|
| 
       44 
45 
     | 
    
         
             
            Noを参照して上の行から下の行までを順次適応させたい
         
     | 
| 
       45 
46 
     | 
    
         | 
| 
       46 
47 
     | 
    
         
             
            ### 補足情報
         
     | 
| 
       47 
     | 
    
         
            -
            python3.6 
     | 
| 
      
 48 
     | 
    
         
            +
            ・python3.6
         
     | 
| 
      
 49 
     | 
    
         
            +
            ・修正元:data1.csv
         
     | 
| 
      
 50 
     | 
    
         
            +
            ・修正データ:fix.csv
         
     | 
| 
      
 51 
     | 
    
         
            +
            ・修正後:data1_after.csv
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
       48 
53 
     | 
    
         
             
            修正元のNoは修正データの参照元と仮定しています
         
     | 
| 
       49 
54 
     | 
    
         
             
            修正データのNoは修正元の参照先と仮定しています
         
     | 
| 
       50 
55 
     | 
    
         
             
            また、過去に似たような質問があった場合は、リンクを載せていただけると幸いです。
         
     | 
1
書き換えから表記を変更
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ### 前提・実現したいこと
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            python3で、修正元のデータに修正データを適応させ修正後のデータの形 
     | 
| 
      
 3 
     | 
    
         
            +
            python3で、修正元のデータに修正データを適応させ修正後のデータの形で出力をしたいです。
         
     | 
| 
       4 
     | 
    
         
            -
            pythonとCSVファイルのみで 
     | 
| 
      
 4 
     | 
    
         
            +
            pythonとCSVファイルのみで操作をしたいです。
         
     | 
| 
       5 
5 
     | 
    
         
             
            ###コード
         
     | 
| 
       6 
6 
     | 
    
         
             
            修正元のデータ
         
     | 
| 
       7 
7 
     | 
    
         
             
            ```csv
         
     |