объединение файла CSV с использованием аргумента командной строки - PullRequest
0 голосов
/ 04 августа 2020

У меня есть сценарий для объединения двух CSV с использованием функции слияния библиотеки panda. Я хочу объединить два имени столбца, чтобы я присоединился к нескольким ключам. пожалуйста, предложите мне некоторые изменения, чтобы я мог присоединиться к нескольким ключам. Когда я запустил код, я получил ошибку

Traceback (последний вызов последним): файл «mergercsv.py», строка 23, в joinCSV merged = table1.merge (table2, how = join_type , on = ['key1', 'key2']) Файл "C: \ Anaconda3 \ envs \ adi \ lib \ site-packages \ pandas \ core \ frame.py", строка 7284, при слиянии return merge (Файл "C: \ Anaconda3 \ envs \ adi \ lib \ site-packages \ pandas \ core \ reshape \ merge.py", строка 73, в merge op = _MergeOperation (файл "C: \ Anaconda3 \ envs \ adi \ lib \ site-packages \ pandas \ core \ reshape \ merge.py ", строка 627, в init ) = self._get_merge_keys () File" C: \ Anaconda3 \ envs \ adi \ lib \ site-packages \ pandas \ core \ reshape \ merge.py ", строка 983, в _get_merge_keys right_keys.append (right._get_label_or_level_values ​​(rk)) Файл" C: \ Anaconda3 \ envs \ adi \ lib \ site-packages \ pandas \ core \ generi c .py ", строка 1692, в _get_label_or_level_values ​​поднять KeyError (key) KeyError: 'key1'

пожалуйста, дайте мне какое-нибудь предложение

    import pandas as pd
      def joinCSV(filename1, filename2, key1,key11,key2=None header1=0, header2=0, join_type="outer"):
     """Read in two CSV files and perform the specified type of join. """

       table1 = pd.read_csv(filename1, header=header1)
       table2 = pd.read_csv(filename2, header=header2)

        # change keys to ints if no header is presen
       if header1 == None: key1 = int(key1)
       if header2 == None: key2 = int(key2)

        try:
              # join on one or two keys, as appropriate
           if key2 == None:
             merged = table1.merge(table2, how=join_type,on=['key1','key2'])
                   
       else: 
            merged = table1.merge(table2, how=join_type, on=key1)       
    return merged

except KeyError as error:
          missing_column = error.args[0].split(' ')[-1]
          print >> sys.stderr, 'Column "%s" not found.' % (missing_column,)
          sys.exit(1)



         if __name__ == "__main__":
              import argparse

         parser = argparse.ArgumentParser(description='Join CSV files.')
         parser.add_argument('file', nargs=2, help="Two filenames")
         parser.add_argument('key1', nargs=2, help="Perform a join on this column. One key can be 
         used if the column has the same name in both files. Can be an index if the file(s) have no 
         headers.")
             parser.add_argument('key2', nargs='?',default=None, help="(Optional) Perform a join on this column in 
              the 
             second file.")
            parser.add_argument('-no1', '--noheader1', action="store_const", const=None, default=0, 
            help="First file has no header.")
            parser.add_argument('-no2', '--noheader2', action="store_const", const=None, default=0, 
            help="Second file has no header.")
            parser.add_argument('--type', default="outer", help="Type of join. Must be one of 'left', 
            'right', 'outer', or 'inner' (default).")
    
                  args = parser.parse_args()
             merged = joinCSV(args.file[0], args.file[1], args.key1[0],args.key1[1],args.key2, 
           args.noheader1, args.noheader2, args.type)
           merged.to_csv('merged.csv',index=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...