2017-05-05 2 views
-3

データセットの列の例:["A"、 "B"、 "C"、 "D"、 "num1"、 "num2"]。だから私は6列を持っています - グループ化のための最初の4つと最後の2つは数値であり、手段はgroupByステートメントに基づいて計算されます。 4つのグループ化列の可能なすべての組み合わせをグループ化したいと思います。 012BgroupBy ["A"、 "B"、 "C"、 "D"]、groupBy ["A"、 "B"、 "D"、 "C"]などの可能なすべてのgroupByを明示的に入力しないようにしたい 私はPythonを初めて使用しています - Pythonではどのようにしてループ内でグループを自動化できるので、すべての可能な組み合わせについてgroupBy計算を行います - この場合は4 * 3 * 2 * 1 = 24の組み合わせですか? Ta。GroupByすべての可能な順列

これまでのご支援ありがとうございます。なぜ 'a ='の部分がうまくいかないのか?

import itertools 
import pandas as pd 
import numpy as np 
df = pd.DataFrame(np.random.randint(0,10,size=(100, 5)), columns=list('ABCDE')) 
group_by_vars = list(df.columns)[0:4] 
perms = [perm for perm in itertools.permutations(group_by_vars)] 
print list(itertools.combinations(group_by_vars,2)) 
a = [x for x in itertools.combinations(group_by_vars,group_by_n+1) for group_by_n in range(len(group_by_vars))] 

エラーではありません。空のオブジェクトを取得しています。なぜ??? itertools.combinations(group_by_vars、2)のcombのようなものは簡単ですが、範囲(len(group_by_vars)のgroup_by_nのitertools.combinations(group_by_vars、group_by_n + 1) )] ??

答えて

0

['A', 'B', 'C', 'D']でグループ化して平均を計算すると、(a0, b0, c0, d0)という特定のグループが平均でm0になります。

列とグループを['A', 'B', 'D', 'C']で並べ替えると、特定のグループ(a0, b0, d0, c0)が得られ、平均値はm0になります。

実際には、それらのm0は同じです。すべてのグループは同じです。あなたはすべての順列に対して同じ正確な計算を複製します...あなたは4つしか持っていません!タプルを注文する方法...なぜ?

+0

うんのリストになります。真実は、私はこれらの4つのグループから4つのすべての2と3の変数の順列が欲しいと言われます。私はちょうどそれが何よりも充実しているという事実に基づいて質問にこれらの詳細をすべて加えたくありませんでした。真実は私がちょうど私が10の変数を言う時を知りたいと言われるべきである - 私は早く私が必要とするより多くの手動タイプよりグループを自動化したいと言われる。たぶん私は明確にすべきだったので、私はそれを謝ります。あなたは大きなポイントを作っています。将来の読者が感謝するであろうこれらのグループの順序を無視することを強調しています。 – jc52766

0
from itertools import permutations 

perms = [perm for perm in permutations(['A','B','C','D'])] 

パーマは、すべての可能な24個の順列

+0

これまでのご協力ありがとうございます。なぜこれがうまくいかないのか?インポートitertools NPとしてPD インポートnumpyの DF = pd.DataFrame(np.random.randint(0,10、サイズ=(100、5))、列=リスト( 'ABCDE'))など インポートパンダgroup_by_vars =リスト(df.columns)[0:4] パーマ= [順列でパーマ用パーマ(group_by_vars)] プリントリスト(itertools.combinations(group_by_vars、2)) = [itertools.combinations(group_by_vars 、group_by_n + 1)] – jc52766

+0

この情報で質問を更新して、コードが正しくフォーマットされているか、新しい質問を投稿する必要があります。どちらの方法でも、特定のエラーを含めるようにして、できるだけ正確に質問に答えてください。 –

+0

そして、あなたが助けてくれた解決策のうち、受け入れられた回答を必ずマークしてください:) @ jc52766 –

関連する問題