に私は動的にデータフレームを分割しようとしているが、それは働いていません変数の値:iの関数が値を含んでいるでしょう「A」と呼ばれるデータフレームを作成します願っています「」..分割データフレームを動的には、Python
splitter('A', 'myset')
に私は動的にデータフレームを分割しようとしているが、それは働いていません変数の値:iの関数が値を含んでいるでしょう「A」と呼ばれるデータフレームを作成します願っています「」..分割データフレームを動的には、Python
splitter('A', 'myset')
あなたは簡単な方法でデータフレームにアクセスすることができます。
cata = cat[cat['cat'] == 'A']
catb = cat[cat['cat'] == 'B']
pandasは、コンテキストに依存するビューまたはコピーを提供します。これは、次のように説明されています。http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
これは、ビューを返すと、基礎となるデータセットによってバックアップされることを意味します。コピーを取得すると、そのコピーの変更は元のデータセットに反映されません。
これは、後で結果を操作するときに注意する必要があることを意味します。コピーの場合、書き込み操作が発生すると多くの警告が表示されます。
あなたはすべてのデータフレームを作成しているようですので、おそらくコピーだけに興味があります。その場合、あなたの懸念事項は、それがすべてメモリに収まるかどうかである。
あなたの持っているものにはいくつか問題があります。主に、関数を正しく実行していないため、変数val
が等価ではなく、文字列 "val"を呼び出そうとしています。これは、2つのデータフレームであなたを残し
data = {'cat' : ['A', 'B', 'C', 'D'], 'dog' : ['e', 'f', 'g', 'h']}
df = pd.DataFrame(data)
print(df)
def splitter(df, val):
return df[df['cat'] == val]
val = 'A'
df_subset = splitter(df, val)
:
は>df
cat dog
0 A e
1 B f
2 C g
3 D h
>df_subset
cat dog
0 A e
、実際にそれを行うための機能は必要ありませんが、あなたは関数がどのように動作するかを見ることができるので、私はそこにそれを残し、これを試してみてください。特に、あなたが返すことを望むときにはoutval
を渡すことはできません。
他のいくつかの側面ノート:
データフレームは、リストなどの値を持つ辞書から作成することができますので、Series
を呼び出す必要はありません。
ちょうど混乱しているので、参照しているデータフレーム列(この場合「cat」)と同じ名前を付けないでください。 1つのデータフレームのみを扱う場合、コンベンションはdf
を使用します。
スプリッター機能を作成する代わりに、この単純なことを行うには、単にdf_subset = df[df['cat'] == val]
を実行します。これは単なるおもちゃの例ではなく、関数内でさらに発生する必要があります。
ありがとうございますが、データフレームを動的に作成して、 'cata'や 'catb'を入力する必要はありませんが、値 'A'と 'B'はCAT'A 'またはCAT'Bに自動的に入力されます'.. – tezzaaa