在Pandas Dataframes中查找单个文件的第一行和最后一行

时间:2017-05-08 02:08:58

标签: python pandas dataframe

我有一个由多个.fits文件组成的Pandas Dataframe,每个文件包含多个具有单独标签的列。我想提取一列并创建包含所述列的第一行和最后一行的变量,但我很难完成单个.fits文件而不仅仅是整个Dataframe。任何帮助,将不胜感激! :)

以下是我在文件中的阅读方式:

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])

我尝试使用.head和.tail命令用于Pandas Dataframes,但我不确定如何正确使用它来满足我的需求。对于我在我的拟合文件中的读取方式,下面的代码给出了前几行和最后几行(确切地说是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似乎可以将所有文件连接在一起。关于如何实现这一目标的任何提示?

1 个答案:

答案 0 :(得分: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