Say I have an (ordered) sequence of animals:
Eagle Elephant Tarantula Terrapin Tiger
and I group by first letter:
Animals.GroupBy(animal => animal.First())
will the elements of the IGrouping
s in the resulting sequence be in the same order as the input sequence?
Groupby preserves the order of rows within each group. When calling apply, add group keys to index to identify pieces. Reduce the dimensionality of the return type if possible, otherwise return a consistent type.
No, the order doesn't matter for the GROUP BY clause. MySQL and SQLite are the only databases I'm aware of that allow you to select columns which are omitted from the group by (non-standard, not portable) but the order doesn't matter there either.
Found answer on MSDN: Yes.
Sort Values in Descending Order with GroupbyYou can sort values in descending order by using ascending=False param to sort_values() method. The head() function is used to get the first n rows. It is useful for quickly testing if your object has the right type of data in it.
Yes, they will be: GroupBy (MSDN).
The IGrouping<TKey, TElement> objects are yielded in an order based on the order of the elements in source that produced the first key of each IGrouping<TKey, TElement>. Elements in a grouping are yielded in the order they appear in source.
Quote from the MSDN page for GroupBy:
The
IGrouping<TKey, TElement>
objects are yielded in an order based on the order of the elements in source that produced the first key of eachIGrouping<TKey, TElement>
. Elements in a grouping are yielded in the order they appear in source.
So your example will result in:
Group 1
- Eagle
- Elephant
Group 2
- Tarantula
- Terrapin
- Tiger
Of course that only applies to the IEnumerable<T>
implementation. The IQueryable<T>
implementation has no such guarantee.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With