2017-11-28 2 views
0

ここでの目的は、それぞれ別々のPandasデータフレームに多くのcsvファイルを読み込むことです。次の3行の3行目は、 "="の前に間違っています。ダイナミック変数ではなくディクショナリの使用に関する多くの記事を読んだことがありますが、ここでそれをどのように適用するかはわかりません。 globals()の方法以外に、それに対して多くの議論があるような代替手段がありますか?変数を動的に割り当てる代わりに実際に辞書を使用できますか?

testlist = ['A', 'B', 'C'] 
for dfsuffix in testlist: 
    'df' + dfsuffix = pandas.read_csv(dfsuffix + '.csv') 

したがって、例えば、私のように解釈されるべき最初の繰り返しを探している:

dfA = pandas.read_csv('A.csv') 

iはmutidimensional配列またはaは思わないので、データフレームは、異なる行の長さでありますマルチインデックスデータフレームが理想的です。彼らは同じ列を持っていますが、私はそれらを追加したくありません。

NB。私は、テストリストの内容がユーザー入力によって入力された日付のリストであること以外は、事前にわからないことを付け加えるべきです。

+4

3つの変数を作成する代わりに、3つのエントリを持つ辞書を1つ作成します。シンプル。 –

+0

私はここに辞書が表示されません – user1767754

+4

はい、あなたは辞書を使用することができます。 'df [dfsuffix] = pandas.read_csv(dfsuffix +" .csv ")'は 'df [" A "]'でデータフレームを参照できます。 –

答えて

2

辞書は、変数名を動的に生成することをめちゃくちゃにやりすぎるよりも優れた解決策です。

df = {} 
testlist = ['A', 'B', 'C'] 
for dfsuffix in testlist: 
    df[dfsuffix] = pandas.read_csv(dfsuffix + '.csv') 

それは、このコードよりも違いはありません:

df = { 
    'A': pandas.read_csv('A.csv'), 
    'B': pandas.read_csv('B.csv'), 
    'C': pandas.read_csv('C.csv') 
} 

次の2つのステートメントは、機能的に同一である。

dfA = pandas.read_csv('A.csv') 
df["A"] = pandas.read_csv('A.csv') 

唯一の違いは、ということである

は、このコードを検討します辞書はループ内で使用する方が簡単です。格納されるデータは同一です。

+1

dfsuffix:testlistのdfsuffixのための 'df = {dfsuffix:pandas.read_csv(dfsuffix + '.csv')}' ... ... btw - パンダに渡る偉大なtkinter伝説を見てよかった! – Parfait

+2

@Parfait私は「パンダに渡る」ではありません - これはパンダの質問ではなく、単なる基本的なpythonです。私はパンダを使ったことが一度もありません。 –

関連する問題