Данные относятся к данным Private vs Public collage, но они работают, поскольку мы можем видеть, что мы загружаем все глобальные параметры в объект морского обихода, а затем сопоставляем диаграммы с одной и той же панелью.
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('College_Data',index_col=0)
g = sns.FacetGrid(df,hue='Private',palette='coolwarm',size=6,aspect=2)
g.map(plt.hist,'Outstate',bins=20,alpha=0.7)
Я думаю, хотите ли Вы использовать дополнительные методы, необходимо использовать GroupJoin
var query =
people.GroupJoin(pets,
person => person,
pet => pet.Owner,
(person, petCollection) =>
new { OwnerName = person.Name,
Pet = PetCollection.Select( p => p.Name )
.DefaultIfEmpty() }
).ToList();
, который Вам, вероятно, придется играть вокруг с выражением выбора. Я не уверен, что это дало бы Вам, хотят Вас, хотят в случае, где у Вас есть 1-many отношения.
я думаю, что это немного легче с синтаксисом Запроса LINQ
var query = (from person in context.People
join pet in context.Pets on person equals pet.Owner
into tempPets
from pets in tempPets.DefaultIfEmpty()
select new { OwnerName = person.Name, Pet = pets.Name })
.ToList();
Вот хорошее сообщение в блоге, это было просто отправлено Fabrice (автор LINQ в Действии), который покрывает материал в вопросе, который я задал. Я помещаю его здесь для ссылки, поскольку читатели вопроса найдут это полезным.
Преобразование LINQ запрашивает от синтаксиса запроса до метода/синтаксиса оператора
Необходимо получить объекты, к которым присоединяются, в набор и затем применить DefaultIfEmpty как сказанный JPunyon:
Person magnus = new Person { Name = "Hedlund, Magnus" };
Person terry = new Person { Name = "Adams, Terry" };
Person charlotte = new Person { Name = "Weiss, Charlotte" };
Pet barley = new Pet { Name = "Barley", Owner = terry };
List<Person> people = new List<Person> { magnus, terry, charlotte };
List<Pet> pets = new List<Pet>{barley};
var results =
from person in people
join pet in pets on person.Name equals pet.Owner.Name into ownedPets
from ownedPet in ownedPets.DefaultIfEmpty(new Pet())
orderby person.Name
select new { OwnerName = person.Name, ownedPet.Name };
foreach (var item in results)
{
Console.WriteLine(
String.Format("{0,-25} has {1}", item.OwnerName, item.Name ) );
}
Выводы:
Adams, Terry has Barley
Hedlund, Magnus has
Weiss, Charlotte has
Я следующее сообщение об ошибке при направлении эта та же проблема:
тип одного из выражений в пункте соединения является неправильным. Вывод типа перестал работать в вызове к 'GroupJoin'.
Решенный, когда я использовал то же имя свойства, оно работало.
(...)
join enderecoST in db.PessoaEnderecos on
new
{
CD_PESSOA = nf.CD_PESSOA_ST,
CD_ENDERECO_PESSOA = nf.CD_ENDERECO_PESSOA_ST
} equals
new
{
enderecoST.CD_PESSOA,
enderecoST.CD_ENDERECO_PESSOA
} into eST
(...)
Оставленный участвует в LINQ, возможны с DefaultIfEmpty () метод. У меня нет точного синтаксиса для Вашего случая хотя...
На самом деле я думаю, изменяете ли Вы просто домашних животных на домашних животных. DefaultIfEmpty () в запросе это могло бы работать...
РЕДАКТИРОВАНИЕ: Я действительно не должен отвечать на вещи когда его последнее...