2017-07-02 10 views
-4

私は何かが明らかでないと確信しています。 "print d"は私が望むものを正確に印刷するためですが、何らかの理由でforループの外側に張り付いていないためです。ループの外でデータフレームの1つを印刷するように頼んだ場合、それらはすべて空のデータフレームです。助けてください。空のデータフレームをもたらすforループのPandasデータフレームの連結

file_name = ['anal_cc_cbs/ld-non_aug-atqd', 'anal_cc_cbs/ld-non_aug-tqt', 'anal_cc_cbs/ld-non_aug-q5t', 
     'anal_cc_cbs/ld-atqd', 'anal_cc_cbs/ld-tqt', 'anal_cc_cbs/ld-q5t', 'anal_fnocc_cbs/ld-non-aug-atqd', 
     'anal_fnocc_cbs/ld-non-aug-tqt', 'anal_fnocc_cbs/ld-non-aug-q5t', 'anal_fnocc_cbs/ld-atqd', 
     'anal_fnocc_cbs/ld-tqt', 'anal_fnocc_cbs/ld-q5t', 'anal_fnocc_cbs/ld-56t', 'vdz_rad', 'vtz_rad', 'vqz_rad', 
     'v5z_rad', 'avdz_rad', 'avtz_rad', 'avqz_rad', 'av5z_rad', 'vdz-f12_rad', 'vtz-f12_rad', 'tzvpp_rad', 
     'qzvpp_rad'] 

o_tqd_df=pd.DataFrame(); o_tqt_df=pd.DataFrame(); o_q5t_df=pd.DataFrame(); 
o_atqd_df=pd.DataFrame(); 
o_atqt_df=pd.DataFrame(); o_aq5t_df=pd.DataFrame(); o_ftqd_df=pd.DataFrame(); 
o_ftqt_df=pd.DataFrame(); 
o_fq5t_df=pd.DataFrame(); o_fatqd_df=pd.DataFrame(); 
o_fatqt_df=pd.DataFrame(); o_faq5t_df=pd.DataFrame(); 
o_fa56t_df=pd.DataFrame(); o_vdz_df=pd.DataFrame(); o_vtz_df=pd.DataFrame(); 
o_vqz_df=pd.DataFrame(); 
o_v5z_df=pd.DataFrame(); o_avdz_df=pd.DataFrame(); o_avtz_df=pd.DataFrame(); 
o_avqz_df=pd.DataFrame(); 
o_av5z_df=pd.DataFrame(); o_vdz_f12_df=pd.DataFrame(); 
o_vtz_f12_df=pd.DataFrame(); o_tzvpp_df=pd.DataFrame(); 
o_qzvpp_df=pd.DataFrame() 

df_name = [o_tqd_df, o_tqt_df, o_q5t_df, o_atqd_df, o_atqt_df, o_aq5t_df, 
o_ftqd_df, o_ftqt_df, o_fq5t_df, o_fatqd_df, 
     o_fatqt_df, o_faq5t_df, o_fa56t_df, o_vdz_df, o_vtz_df, o_vqz_df, 
o_v5z_df, o_avdz_df, o_avtz_df, o_avqz_df, 
     o_av5z_df, o_vdz_f12_df, o_vtz_f12_df, o_tzvpp_df, o_qzvpp_df] 

for f, d in zip(file_name, df_name): 
    allFiles = glob.glob('/theoryfs2/ds/warden/projects/fp_opt/' + f + '/ld-*') 
    dlist = [] 
    for fil in allFiles: 
     df = pd.read_csv(fil) 
     dlist.append(df) 
    d = pd.concat(dlist) 
    print d 
+1

FYI、Panelは0.20.0(https://pandas.pydata.org/pandas-docs/stable/dsintro.html#panel) – woodpav

+1

OPの下で償却されますので、これを使用する必要はありません。何が起こっているのかわかりません。辞書ははるかに単純です。 'file_name:pd.DataFrame' – woodpav

+0

@tywoodpav Awww、ちょうど私がそれらを使用しようとしていました。ありがとう、私はそれを知らなかった。だから...彼らもパンダの名前を変更するのだろうか? ;)(私の以前のコメントを削除する) –

答えて

0
from collections import defaultdict  

dfs = defaultdict(pd.DataFrame) 

for filename in filenames: 
    with open(filename) as list_of_csvs: 
     for csv_file in list_of_csvs: 
      dfs[filename].append(pd.read_csv(csv_file)) 

私はそれらのファイルが何であるか見当がつかない。私はそれらがcsvファイルへの行を持つテキストファイルであると仮定しています。

このコードは、各データフレームにファイルにリストされているCSVファイルの蓄積された内容があるデータフレームの辞書を作成します。

EDIT:defaultdictは辞書を作成しますが、if key not in d: d[key] = pd.DataFrame()を実行する必要はありません。あなたが可能な限り使用する必要がある非常に便利なトリック。

+0

ありがとう。これはうまくいった。それらは、各フォルダのデータフレームを分離するために追加しようとしていたCSVファイルのフォルダでした。 – rookEqueen

+0

正しい回答としてマークする:) – woodpav

関連する問題