Python 从CSV文件中提取列以用作NetworkX中的节点列表

Python 从CSV文件中提取列以用作NetworkX中的节点列表,python,csv,header,networkx,nodelist,Python,Csv,Header,Networkx,Nodelist,我有一个CSV文件,有两列:用户和位置。我想创建两个列表:一个只有用户,另一个只有位置,这样我就可以使用networkx中的draw_network_nodes(nodelist=…)函数将用户和位置分别绘制为具有不同形状和颜色的节点(所有用户都是蓝色框,所有位置都是红色圆圈) 此外,我的CSV文件中有一个标题,因此我不希望标题名称成为这两个列表的一部分。由于您没有提供输入和预期输出,因此我对它们进行了一些假设。假设输入文件名为data.csv: user,location john,seatt

我有一个CSV文件,有两列:用户和位置。我想创建两个列表:一个只有用户,另一个只有位置,这样我就可以使用networkx中的draw_network_nodes(nodelist=…)函数将用户和位置分别绘制为具有不同形状和颜色的节点(所有用户都是蓝色框,所有位置都是红色圆圈)


此外,我的CSV文件中有一个标题,因此我不希望标题名称成为这两个列表的一部分。

由于您没有提供输入和预期输出,因此我对它们进行了一些假设。假设输入文件名为data.csv

user,location
john,seattle
alan,los angeles
trish,new york
import csv

with open('data.csv') as csv_in,          \
     open('users.txt', 'w') as users_out, \
     open('locations.txt', 'w') as locations_out:
    csv_dict_reader = csv.DictReader(csv_in)
    for line in csv_dict_reader:
        users_out.write(line['user'] + '\n')
        locations_out.write(line['location'] + '\n')
将csv拆分为两个文件的脚本称为csv\u split.py

user,location
john,seattle
alan,los angeles
trish,new york
import csv

with open('data.csv') as csv_in,          \
     open('users.txt', 'w') as users_out, \
     open('locations.txt', 'w') as locations_out:
    csv_dict_reader = csv.DictReader(csv_in)
    for line in csv_dict_reader:
        users_out.write(line['user'] + '\n')
        locations_out.write(line['location'] + '\n')
讨论
  • 我的代码用于演示,因此不提供任何错误检查
  • 类假定第一行是标题,并将其用作每行的键

    • 由于您没有提供任何输入和预期输出,因此我对它们进行了一些假设。假设输入文件名为data.csv

      user,location
      john,seattle
      alan,los angeles
      trish,new york
      
      import csv
      
      with open('data.csv') as csv_in,          \
           open('users.txt', 'w') as users_out, \
           open('locations.txt', 'w') as locations_out:
          csv_dict_reader = csv.DictReader(csv_in)
          for line in csv_dict_reader:
              users_out.write(line['user'] + '\n')
              locations_out.write(line['location'] + '\n')
      
      将csv拆分为两个文件的脚本称为csv\u split.py

      user,location
      john,seattle
      alan,los angeles
      trish,new york
      
      import csv
      
      with open('data.csv') as csv_in,          \
           open('users.txt', 'w') as users_out, \
           open('locations.txt', 'w') as locations_out:
          csv_dict_reader = csv.DictReader(csv_in)
          for line in csv_dict_reader:
              users_out.write(line['user'] + '\n')
              locations_out.write(line['location'] + '\n')
      
      讨论
      • 我的代码用于演示,因此不提供任何错误检查
      • 类假定第一行是标题,并将其用作每行的键

      在海武的回答之上建造:

      import csv
      def reader(filename):
          for (lineno, line) in enumerate(open(filename)):
              if lineno > 0: # skip header
                  yield line
      
      filename = "locations.csv"
      (users, locations) = zip(*( row for row in csv.reader(reader(filename))))
      print "users     =", users
      print "locations =", locations
      
      给出:

      locations = ('seattle', 'los angeles', 'new york', 'london')
      users     = ('john', 'alan', 'trish', 'jack')
      
      发件人:


      基于海武的回答:

      import csv
      def reader(filename):
          for (lineno, line) in enumerate(open(filename)):
              if lineno > 0: # skip header
                  yield line
      
      filename = "locations.csv"
      (users, locations) = zip(*( row for row in csv.reader(reader(filename))))
      print "users     =", users
      print "locations =", locations
      
      给出:

      locations = ('seattle', 'los angeles', 'new york', 'london')
      users     = ('john', 'alan', 'trish', 'jack')
      
      发件人:


      请编辑您的帖子以包含您尝试的解决方案。非常感谢。你看过这个吗?这里有一些非常清楚的例子。请编辑您的帖子,包括您尝试的解决方案。非常感谢。你看过这个吗?这里有一些非常清楚的例子。