2017-05-08 1031 views
2

我有一個由多個.fits文件組成的Pandas Dataframe,每個文件包含多個帶有單獨標籤的列。我想提取一列並創建包含該列的第一行和最後一行的變量,但我很難完成個別.fits文件而不是整個數據幀。任何幫助,將不勝感激! :)在Pandas數據框中查找單個文件的第一行和最後一行

這是我在文件中如何閱讀:

path = '/Users/myname/folder/' 
m = [os.path.join(dirpath, f) 
    for dirpath, dirnames, files in os.walk(path) 
    for f in fnmatch.filter(files, '*.fits')] 

^^^這個遞歸搜索通過我的包含很多子多.fits文件的目錄。

dataframes = [] 
for ii in range(0,len(m)): 
    data = pd.read_csv(m[ii], header = 'infer', delimiter = '\t') 
    d = pd.DataFrame(data) 
    top = d['desired_column'].head() 
    bottom = d['desired_column'].tail() 
    First_and_Last = pd.concat([top,bottom]) 

我嘗試使用熊貓Dataframes的。頭和.tail命令,但我不確定如何正確地使用它爲我的願望。對於我如何閱讀適合文件,以下代碼給出了前幾行和最後幾行(5與頭尾的默認值爲5一樣),如下所示:

0  2.456849e+06 
1  2.456849e+06 
2  2.456849e+06 
3  2.456849e+06 
4  2.456849e+06 
1118 2.456852e+06 
1119 2.456852e+06 
1120 2.456852e+06 
1121 2.456852e+06 
1122 2.456852e+06 

我想要做的是嘗試獲取每個.fits文件的第一行和最後一行,以獲取特定的列,而不僅僅是包含.fits文件的Dataframe。通過我在.fits文件中閱讀的方式,Dataframe似乎將所有文件連接在一起。有關如何完成此目標的任何提示?

+0

爲了澄清,你說你正在獲取整個數據幀的第一個和最後5個。它由幾個合適的文件組成。但是你的代碼會建議First_and_Last只包含你讀到的最後一個文件的第一個和最後5個。也許你沒有發佈你的所有代碼? –

回答

1

如果你只想要第一行:

top = d['desired_column'].head(1) 

如果你只想要最後一行:

bottom = d['desired_column'].tail(1) 

我沒發現的問題,「據幀似乎有點串聯所有文件在一起。「你能否澄清這個問題?
順便說一下,在data = pd.read_csv(m[ii], header = 'infer', delimiter = '\t'),data已經是DataFrame。因此,d = pd.DataFrame(data)是不必要的。

0

的.iloc功能應該很容易拉頂部和底部的一排,其中DF [「COL_1」]這裏下面表示感興趣列:

In [28]: import pandas as pd 

In [29]: import numpy as np 

In [30]: np.random.seed(42) 

In [31]: df = pd.DataFrame(np.random.randn(6,3), columns=["col_1", "col_2", "col_3"]) 

In [32]: df 
Out[32]: 
     col_1  col_2  col_3 
0 0.496714 -0.138264 0.647689 
1 1.523030 -0.234153 -0.234137 
2 1.579213 0.767435 -0.469474 
3 0.542560 -0.463418 -0.465730 
4 0.241962 -1.913280 -1.724918 
5 -0.562288 -1.012831 0.314247 

In [33]: pd.Series([df["col_1"].iloc[0], df["col_1"].iloc[-1]]) # pd.Series([top, bottom]) ; or pd.DataFrame([top, bottom]), if data frame needed. 
Out[33]: 
0 0.496714 
1 -0.562288 
dtype: float64 
相關問題