Для выбора только определенных столбцов из нескольких столбцов для заданного значения в pandas:
select col_name1, col_name2 from table where column_name = some_value.
Опции:
df.loc[df['column_name'] == some_value][[col_name1, col_name2]]
или
df.query['column_name' == 'some_value'][[col_name1, col_name2]]
Решение, хотя то, которое задерживает обработку нулевого значения к коду, могло быть:
DateTime вчера = DateTime. Теперь. Дата. AddDays (-1);
var collection=
from u in db.Universe
select new
{
u.id,
u.name,
MaxDate =(DateTime?)
(
from h in db.History
where u.Id == h.Id
&& h.dateCol < yesterday
select h.dateCol
).Max()
};
Это не производит точно тот же SQL, но действительно обеспечивает тот же логический результат. Перевод "сложных" SQL-запросов к LINQ не всегда прост.
Это не полный ответ для Вас, но на левой части соединения можно использовать оператор DefaultIfEmpty как так:
var collection =
from u in db.Universe
join history in db.History on u.id = history.id into temp
from h in temp.DefaultIfEmpty()
where h.dateCol < DateTime.Now.Date.AddDays(-1)
select u.id, u.name, h.dateCol ?? '1900-01-01'
у меня не было потребности сделать любые команды groupby все же, таким образом, я пропустил, это относительно не отправляет Вам вниз неправильный путь. Две других быстрых вещи отметить. Я не мог на самом деле присоединиться на двух параметрах хотя как выше существуют способы обойти его. Кроме того?? оператор работает действительно хорошо вместо isnull в SQL.
Вы собираетесь хотеть использовать join into
создайте для создания запроса группы.
TestContext db = new TestContext(CreateSparqlTripleStore());
var q = from a in db.Album
join t in db.Track on a.Name equals t.AlbumName into tracks
select new Album{Name = a.Name, Tracks = tracks};
foreach(var album in q){
Console.WriteLine(album.Name);
foreach (Track track in album.Tracks)
{
Console.WriteLine(track.Title);
}
}