pandas.DataFrameやpandas.Seriesのインデックスを階層的に構成できるマルチインデックス(階層型インデックス)を使うと、階層ごとに合計や平均などの統計量を算出できて便利。 関連記事: pandasのMultiindexで階層ごとの統計量・サンプル数を算出 関連記事: pandasで時系列データの曜日や月、四半期、年ごとの合計や平均を算出 マルチインデックスについてのもろもろの処理は以下の記事を参照。 関連記事: pandasのMultiindexの指定・追加・解除・ソート・レベル変更 マルチインデックスの行・列の選択(抽出)方法に若干クセがあるので注意が必要。 公式ドキュメントでは以下の節で説明されている。 MultiIndex / Advanced Indexing — pandas 0.22.0 documentation 例として以下のcsvデータを使用する。
Introduction to Slices inGolangRajeev SinghGolangMarch 20, 20185 mins read A Slice is a segment of an array. Slicesbuild on arrays and provide more power, flexibility, and convenience compared to arrays.Just like arrays, Slices are indexable and have a length. But unlike arrays, they can be resized. Internally, A Slice isjust a reference to an underlying array. In this article, we’ll learn how
先日、集合や族を扱うパッケージを書いていたところ、mapやsliceが混じった構造でどのようにEqualを実装するかで少しハマりました。reflect.DeepEqualの実装を見て解決したので備忘として整理します。 ちょうどGoで違うmapであることをテストする でも、同じような課題に遭遇された方がいたようです。 考え方 まず、mapのEqualを実装するときに定義する2つのmapが等しいは、大きく以下の2つになると思います。 中身の要素が同じmapは、等しい(ポインタが異なることは気にしない) 中身が同じでも、ポインタが異なれば、等しくない それぞれ、以下のように比較できます。 1. 中身の要素が同じmapは、等しい(ポインタが異なることは気にしない) この場合は、中身を比較すればいいので、reflect.DeepEqualで簡潔に書くことができます。 2. 中身が同じでも、ポインタが
Unlike arrays, slices are typed only by the elements they contain (not the number of elements). An uninitialized slice equals to nil and has length 0. Tocreate a slice with non-zero length, use the builtin make. Here we make a slice of strings of length 3 (initially zero-valued). By default a new slice’s capacity is equal toits length; if we know the slice isgoing to grow ahead of time,it’s po
You should use reflect.DeepEqual() DeepEqual is a recursive relaxation ofGo's == operator. DeepEqualreports whether x and y are “deeply equal,” defined as follows. Two values of identical type aredeeply equal if one of the following cases applies. Values of distinct types are neverdeeply equal. Array values aredeeply equal when their corresponding elements aredeeply equal. Struct values are
intro 先日GoのSliceもヤバイ - Qiita こんな記事をみて、別の挙動だけどスライスの内部を理解しきれていなかった頃のことを思い出した。 結構前に謎に思っていた挙動についての話。 以前この挙動を解説しようと思って、前提として書いたスライスの内部構造の記事が、Go のスライスの内部実装 だったのですが、そっちを書き終わって満足してしまい、本題を忘れていました。 この挙動は、先のブログで説明した内容がわかっていないと、なかなか理解できないかも。わかってしまえば簡単ですが。 やりたいのは、関数側でスライスを操作したときの呼び出し側での結果。 順を追ってみてみます。 配列を関数内で変更する 関数は値渡しで、配列はそれ自体が値なので、まるっとコピーされます。 以下の例は、戻り値で返さないと、呼出側は変化しません。 package main import ( "log" ) func
History 14/05/09: Merge2 を修正しました。http://twitter.com/jbking/status/464659353945911297 IntroGo のスライスは、いわゆる LL 系の言語が持つ可変長配列の実装と似ています。 よって LL のような手軽な扱いをすることもできますが、その内部実装を知ることでより効率の良いメモリハンドリングができ、パフォーマンスを改善や、メモリーリークの防止などに繋がる可能性があります。 この辺は SWrap というライブラリを作りながら勉強したので、今回は、このGo のスライスの内部実装を解説します。Go の配列 スライスを知るためには、まず配列について知っておく必要があります。Go の配列は固定長のため、以下のように長さを指定して宣言します。 var arr [4]int func main() { arr =
Go’s arrays are values. An array variabledenotes the entire array;it is not a pointer to the first array element (as would be the case in C). This means that when you assign or pass around an array value you will make a copy ofits contents. (To avoid the copy you could pass a pointer to the array, but then that’s a pointer to an array, not an array.) One way to think about arrays is as a sort o
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く