2015-12-14 117 views
0

我有格式化的數據集如下:從文件中選擇列,並寫入新文件,文件名作爲列名

Theta DeltaD DeltaS Lambda Rho LogLik 
1 0.0137060718 0.0378903969 0.4939959667 0.3795642767 0.57232859 -963.7743175455 
2 0.0137060718 0.0378903969 0.4951036519 0.3795642767 0.57232859 -963.745770314 
3 0.0136703063 0.038522257 0.4807565701 0.3551424944 0.5639182313 -964.5802838333 
4 0.0136703063 0.0382752067 0.4597773216 0.3551424944 0.5621381788 -963.0634821126 
5 0.0136703063 0.0377739624 0.4597773216 0.3486538546 0.5552092482 -963.315982188 
6 0.0136119461 0.0359108581 0.4597773216 0.3486538546 0.5552092482 -963.5321138251 
7 0.0136119461 0.0374395068 0.4597773216 0.3582883699 0.5862608093 -963.3432259866 
8 0.0136119461 0.0374395068 0.4597773216 0.3582883699 0.5862608093 -963.3432259866 
9 0.0136119461 0.0383243243 0.4597773216 0.3582883699 0.5862608093 -963.288725532 
10 0.0136119461 0.0383243243 0.467850463 0.3582883699 0.5862608093 -963.058588502 

我想從每個文件選擇列三角洲和輸出保存爲CSV或不管分隔格式如何,但文件名都是列名。

我想出了一個代碼如下:

import glob 
import numpy 
import pandas as pd 
import csv 

outfile = open("final_DeltaS",'w') 

list_of_files = [] 
for name in glob.glob('*iter.csv'): 
    list_of_files.append(name) 


def fileinput(files): 
    for f in files: 
     df = pd.read_csv(f) 
     print f, df["DeltaS"] 

fileinput(list_of_files) 

但我堆在如何從這個環路輸出數據:X 預期輸出:

File_1 File_2 
0.0378903969 0.4939959667 
0.0378903969 0.4951036519 
0.038522257 0.4807565701 
0.0382752067 0.4597773216 
0.0377739624 0.4597773216 
0.0359108581 0.4597773216 
0.0374395068 0.4597773216 
0.0374395068 0.4597773216 
0.0383243243 0.4597773216 
0.0383243243 0.467850463 

回答

0

IIUC那麼下面應該工作:

df_col_list = [] 
def fileinput(files): 
    for f in files: 
     df = pd.read_csv(f, usecols=['DeltaS']) 
     df.rename(columns={'DeltaS':f}, inplace=True) 
     df_col_list.append(df) 

concat = pd.concat(df_col_list, axis = 1) 
concat.to_csv(your_output_path) 

您可能需要將文件名剝離爲您真實的希望但這是微不足道的

0

您可以使用read_csv eith參數sep='\s*' - 用於篩選列的engine='python'(因爲警告)和usecols的任意空格。

最後,你需要刪除索引index=Noneto_csv

import glob 
import pandas as pd 

#list of all df 
dfs = [] 
for f in glob.glob('*iter.csv'): 
    #print f 
    df = pd.read_csv(f, usecols=['DeltaS'], sep='\s*', engine='python') 
    #print df 
    df = df.rename(columns={'DeltaS':f}) 
    dfs.append(df) 

final = pd.concat(dfs, axis = 1) 
print final 
# test1iter.csv test2iter.csv 
#0  0.493996  0.493996 
#1  0.495104  0.495104 
#2  0.480757  0.480757 
#3  0.459777  0.459777 
#4  0.459777  0.459777 
#5  0.459777  0.459777 

final.to_csv('test/file.csv', index=None, sep='\t') 
#test1iter.csv test2iter.csv 
#0.4939959667 0.4939959667 
#0.4951036519 0.4951036519 
#0.4807565701 0.4807565701 
#0.4597773216 0.4597773216 
#0.4597773216 0.4597773216 
#0.4597773216 0.4597773216 
相關問題