df.set_index('name').unstack().reset_index().rename(columns={'level_0':'Code'}).dropna().drop(0,axis =1)[['name','Code']].sort_values('name')
выходной будет
name Code
alex 2
alex 3
john 1
mike 1
rachel 0
rachel 4
О import
оператор:
(хорошая рецензия по http://effbot.org/zone/import-confusion.htm, и учебное руководство по Python вдается в подробности по http://docs.python.org/tutorial/modules.html),
Существует два нормальных способа импортировать код в программу Python.
Модуль является просто файлом, который заканчивается в .py. Для Python это должно существовать на пути поиска (как определено в sys.path). Путь поиска обычно состоит из того же каталога .py, который выполняется, а также системные каталоги Python.
Учитывая следующую структуру каталогов:
myprogram/main.py
myprogram/rss.py
От main.py можно "импортировать" классы RSS путем выполнения:
import rss
rss.rss_class()
#alternativly you can use:
from rss import rss_class
rss_class()
Пакеты обеспечивают более структурированный способ содержать большие программы Python. Они - просто каталог, который содержит __init__.py
а также другие файлы Python.
Пока каталог пакета идет sys.path
, затем это может использоваться точно то же как выше.
Для нахождения текущего пути выполните это:
import sys
print(sys.path)
Мне действительно не нравится отвечать настолько поздно, но я не совсем удовлетворен существующими ответами.
Я только начинаю Python, и я хотел бы использовать внешний класс RSS. Куда я помещаю тот класс и как я импортирую его?
Вы помещаете его в файл Python и даете файлу Python расширение .py. Затем можно импортировать модуль, представляющий тот файл, и получить доступ к классу. Предположим, Вы хотите импортировать его, необходимо поместить файл Python где-нибудь в путь поиска импорта - Вы видите это во времени выполнения с sys.path
, и возможно старшая значащая вещь знать состоит в том, что пакеты сайта (определенный для установки) и текущий каталог ('') обычно находятся в пути поиска импорта. Когда у Вас есть единственный гомогенный проект, Вы обычно помещаете его в тот же каталог как Ваши другие модули и позволяете им импортировать друг друга из того же каталога.
Я хотел бы в конечном счете смочь совместно использовать программы Python.
После того, как у Вас будет настроенный как автономный файл, можно получить настроенный для распределения с помощью distutils. Тем путем Вы не должны волноваться о том, где, точно, это должно быть установлено - distutils, будет волноваться для Вас. Существует много других дополнительных средств распределения также, многие определенные для ОС - distutils работы для модулей, но если Вы хотите распределить надлежащую программу, которую пользователи предназначены для выполнения, другие опции существуют, такие как использование py2exe для Windows.
Что касается различия модулей/пакетов, ну, в общем, здесь это идет. Если у Вас есть целый набор классов, которые Вы хотите разделенный так, чтобы у Вас не было одной большой путаницы файла Python, можно разделить ее на несколько файлов Python в каталоге и дать каталог __init__.py
. Важная вещь отметить состоит в том, что из Python, нет никакого различия между пакетом и любым другим модулем. Пакет является модулем, это - просто другой способ представить один в файловой системе. Точно так же модуль не является просто .py файлом - если это имело место, sys
не был бы модуль, так как он не имеет никакого .py файла. Это встроено к интерпретатору. Существует бесконечно много способов представить модули в файловой системе, так как можно добавить рычаги импорта, которые могут создать пути кроме каталогов и .py файлов для представления модулей. Можно было, гипотетически, создать рычаг импорта, который использовал spidermonkey для загрузки файлов JavaScript как модулей Python.
from [module] import [classname]
Где модуль находится где-нибудь на Вашем пути Python.
О модулях и пакетах:
модуль является файлом, заканчивающимся .py
. Можно поместить класс в такой файл. Как сказано Andy, это должно быть в Вашем пути Python (PYTHONPATH
). Обычно Вы будете помещать дополнительный модуль в тот же каталог, как Ваш сценарий то, хотя, который может быть непосредственно импортирован.
пакет является каталогом, содержащим __init__.py
(может быть пустым), и содержит файлы модуля. Можно затем импортировать а-ля from <package>.<module> import <class>
. Снова это должно быть на Вашем пути Python.
Можно найти больше в documenation.